2015-03-02 90 views
1

我一直试图让django-pipeline工作来组合和缩小我的css和js资产。我似乎无法排除以下问题。当我运行:用于管道的collectfiles失败/ yUglify:系统找不到指定的路径

​​

我得到一个错误:

pipeline.exceptions.CompressorError: The system cannot find the path specified. 

难道我也许需要安装一些额外的软件包?如果是这样,怎么样?

我的Django的管道设置:

STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage' 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    'pipeline.finders.PipelineFinder', 
) 

PIPELINE_CSS = { 
    'testme': { 
     'source_filenames': { 
      'static/surveys/css/main.css', 
     }, 
     'output_filename': 'css/testme.css', 
    }, 
} 

PIPELINE_JS = { 
    'testmejs': { 
     'source_filenames': { 
      'surveys/js/gklib.js', 
     }, 
     'output_filename': 'surveys/js/testmejs.css', 
    }, 
} 

PIPELINE_ENABLED = True 

这是完整的输出:

PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.csstidy.CSSTidyCompressor' 

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\django\core\management\__init__.py", line 385, in execute_from_command_line 
    utility.execute() 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\django\core\management\__init__.py", line 377, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\django\core\management\base.py", line 288, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\django\core\management\base.py", line 338, in execute 
    output = self.handle(*args, **options) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\django\core\management\base.py", line 533, in handle 
    return self.handle_noargs(**options) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 168, in handle_noargs 
    collected = self.collect() 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 114, in collect 
    for original_path, processed_path, processed in processor: 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\pipeline\storage.py", line 36, in post_process 
    packager.pack_javascripts(package) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\pipeline\packager.py", line 112, in pack_javascripts 
    return self.pack(package, self.compressor.compress_js, js_compressed, templates=package.templates, **kwargs) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\pipeline\packager.py", line 106, in pack 
    content = compress(paths, **kwargs) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\pipeline\compressors\__init__.py", line 67, in compress_js 
    js = getattr(compressor(verbose=self.verbose), 'compress_js')(js) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\pipeline\compressors\yuglify.py", line 13, in compress_js 
    return self.compress_common(js, 'js', settings.PIPELINE_YUGLIFY_JS_ARGUMENTS) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\pipeline\compressors\yuglify.py", line 10, in compress_common 
    return self.execute_command(command, content) 
    File "d:\Development\django\TopDish\env_mrg_tacx_laptop\lib\site-packages\pipeline\compressors\__init__.py", line 240, in execute_command 
    raise CompressorError(stderr) 
pipeline.exceptions.CompressorError: The system cannot find the path specified. 

UPDATE

我又用另一个压缩机试了一下

这给出了完全相同的结果,我可能做错了什么?

更新2

如果我设置为无一切正常压缩机,即文件得到合并,并放置在静态文件的文件夹。他们也正确地服务。

PIPELINE_CSS_COMPRESSOR = None 
PIPELINE_JS_COMPRESSOR = None 

所以它必须是在访问或使用压缩机的东西。我在Windows上运行。

更新3

我已经添加了一些打印()命令初始化的.py在/站点包/管道/压缩机/

class SubProcessCompressor(CompressorBase): 
    def execute_command(self, command, content): 
     import subprocess 
     print("Command: " + command) 

的命令是:在/ usr/bin中/ env/yuglify --type = css --terminal 哪些可能(可能?)从不在Windows上工作。

我又试图将其部署到AWS弹性魔豆,但我得到一个错误,那么还有:

INFO: Environment update is starting. 
INFO: Deploying new version to instance(s). 
ERROR: [Instance: i-75dc5e91 Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: [CMD-AppDeploy/AppDeployStage0/EbExtensionPostBuild] command failed with error code 1: Error occurred during build: Command 01_collectstatic failed. 
INFO: Command execution completed on all instances. Summary: [Successful: 0, Failed: 1]. 
INFO: New application version was deployed to running EC2 instances. 
ERROR: Update environment operation is complete, but with errors. For more information, see troubleshooting documentation. 
ERROR: Update environment operation is complete, but with errors. For more information, see troubleshooting documentation. 

我知道这是可以手动设置压缩机仓的位置,但在哪里为Elastic Beanstalk设置它?

任何建议如何解决这个问题?

+0

注意论据现在正处于一个管道对象发现这些命令,所以 '''PIPELINE = { ... 'CSS_COMPRESSOR':None, 'JS_COMPRESSOR':None, }''' – 2016-01-29 02:24:02

回答

0

我已通过添加命令到.ebextensions/app.config文件固定它:

# these commands run before the application and web server are 
# set up and the application version file is extracted 
commands: 
    01_node_install: 
    # run this command from /tmp directory 
    cwd: /tmp 
    # don't run the command if node is already installed (file /usr/bin/node exists) 
    test: '[ ! -f /usr/bin/node ] && echo "node not installed"' 
    # install from epel repository 
    # flag -y for no-interaction installation 
    command: 'yum install -y nodejs npm --enablerepo=epel' 
    command: 'npm -g install yuglify' 

基于我对http://qpleple.com/install-nodejs-on-elastic-beanstalk/

+0

'yum install -y nodejs npm --enablerepo = epel'和'npm -g install yuglify'最好分成2个独立的命令,例如。 '01_node_install'和'02_yuglify_install'。 – greenafrican 2015-06-19 08:48:46

相关问题