2016-02-26 101 views
9

我正在使用dependency_links安装一个软件包。它似乎安装了软件包,但打破了pip冻结功能(这可能意味着存在更深的安装问题)。我希望能够从自定义服务器下载软件包,而不需要运行setup.py以外的任何设置。`pip freeze`打包安装

这是我setup.py文件:

from setuptools import setup 

    setup(
     name='package' 
     ,version='0.1.0' 
     ,packages=['foo', 
       'bar' 
       ] 
     ,long_description='' 
     ,url='https://github.com/myrepo' 
     ,install_requires=['numpy>=1.9.2' 
         ,'some_package' 
         ] 
     ,dependency_links=[ 
      "http://custom_server/packages/some_package-0.1.0.tar.gz" 
     ]    
) 

安装似乎工作正常,但如果我尝试和运行pip_freeze我得到下面的错误。

pip freeze 

Error [Errno 20] Not a directory: '/Users/abc/anaconda/lib/python2.7/site-packages/some_package.egg' while executing command git rev-parse 
Exception: 
Traceback (most recent call last): 
    File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/basecommand.py", line 209, in main 
    status = self.run(options, args) 
    File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/commands/freeze.py", line 70, in run 
    for line in freeze(**freeze_kwargs): 
    File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/operations/freeze.py", line 49, in freeze 
    dependency_links 
    File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/__init__.py", line 235, in from_dist 
    if dist_is_editable(dist) and vcs.get_backend_name(location): 
    File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/vcs/__init__.py", line 75, in get_backend_name 
    if vc_type.controls_location(location): 
    File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/vcs/git.py", line 266, in controls_location 
    on_returncode='ignore') 
    File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/vcs/__init__.py", line 322, in run_command 
    spinner) 
    File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/utils/__init__.py", line 677, in call_subprocess 
    cwd=cwd, env=env) 
    File "/Users/myname/anaconda/lib/python2.7/subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "/Users/myname/anaconda/lib/python2.7/subprocess.py", line 1335, in _execute_child 
    raise child_exception 
OSError: [Errno 20] Not a directory: '/Users/myname/anaconda/lib/python2.7/site-packages/some_package.egg' 
+0

我知道它与鸡蛋文件而不是鸡蛋目录有关,但我不知道如何解决它。 – Chris

+0

尝试添加#egg = some_package-0.1.0到您的依赖链接 – irqed

+0

'http:// custom_server/packages/some_package-0.1.0.tar.gz#egg = some_package-0.1.0'给了我同样的错误,当我运行pip冻结。安装仍然有效,它只是打破点冻结:/ – Chris

回答

4

pip install .--extra-index-url--trusted-host的伎俩,同样,如果你想在编辑模式下,你可以做pip install -e .安装它。

你可能还是想看看上市dependency_links和zip_safe选项: ​​ https://pythonhosted.org/setuptools/setuptools.html#setting-the-zip-safe-flag https://github.com/irqed/octokit.py/blob/master/setup.py#L51

顺便说一句,你可以在PIP requirements.txt文件中指定--extra-index-url--trusted-host为好。