我正在使用python version 2.7
和pip version is 1.5.6
。
我想从url安装额外的库,就像正在安装setup.py上的git repo一样。
我在install_requires
参数中添加了额外的内容。这意味着,我的库需要额外的库,而且还必须安装它们。
...
install_requires=[
"Django",
....
],
...
但是像git repos这样的url在install_requires
中不是有效的字符串。假设,我想从github安装一个库。我已经搜索过这个问题,我发现了一些东西,我可以把库放在dependency_links
的setup.py
中。但那还是不行。这是我的依赖链接定义
dependency_links=[
"https://github.com/.../tarball/master/#egg=1.0.0",
"https://github.com/.../tarball/master#egg=0.9.3",
],
链接有效。我可以用这些网址从互联网浏览器下载它们。这些额外的库仍然没有安装在我的设置中。我还尝试了--process-dependency-links
参数来强制pip。但结果是一样的。我管的时候不会出错。
安装后,在pip freeze
结果中没有库。
如何使它们与我的setup.py
安装一起下载?
这是我完整的setup.py
from setuptools import setup
try:
long_description = open('README.md').read()
except IOError:
long_description = ''
setup(
name='esef-sso',
version='1.0.0.0',
description='',
url='https://github.com/egemsoft/esef-sso.git',
keywords=["django", "egemsoft", "sso", "esefsso"],
install_requires=[
"Django",
"webservices",
"requests",
"esef-auth==1.0.0.0",
"django-simple-sso==0.9.3"
],
dependency_links=[
"https://github.com/egemsoft/esef-auth/tarball/master/#egg=1.0.0.0",
"https://github.com/egemsoft/django-simple-sso/tarball/master#egg=0.9.3",
],
packages=[
'esef_sso_client',
'esef_sso_client.models',
'esef_sso_server',
'esef_sso_server.models',
],
include_package_data=True,
zip_safe=False,
platforms=['any'],
)
这是圆木
Downloading/unpacking esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Getting page https://pypi.python.org/simple/esef-auth/
Could not fetch URL https://pypi.python.org/simple/esef-auth/: 404 Client Error: Not Found
Will skip URL https://pypi.python.org/simple/esef-auth/ when looking for download links for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Getting page https://pypi.python.org/simple/
URLs to search for versions for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0):
* https://pypi.python.org/simple/esef-auth/1.0.0.0
* https://pypi.python.org/simple/esef-auth/
Getting page https://pypi.python.org/simple/esef-auth/1.0.0.0
Could not fetch URL https://pypi.python.org/simple/esef-auth/1.0.0.0: 404 Client Error: Not Found
Will skip URL https://pypi.python.org/simple/esef-auth/1.0.0.0 when looking for download links for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Getting page https://pypi.python.org/simple/esef-auth/
Could not fetch URL https://pypi.python.org/simple/esef-auth/: 404 Client Error: Not Found
Will skip URL https://pypi.python.org/simple/esef-auth/ when looking for download links for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Could not find any downloads that satisfy the requirement esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Cleaning up...
Removing temporary dir /Users/ahmetdal/.virtualenvs/esef-sso-example/build...
No distributions at all found for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Exception information:
Traceback (most recent call last):
File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/commands/install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/req.py", line 1177, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/index.py", line 277, in find_requirement
raise DistributionNotFound('No distributions at all found for %s' % req)
DistributionNotFound: No distributions at all found for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
它似乎不使用dependency_links
中的源代码。
启用
dependency_links
的--process-dependency-links
选项是removed in Pip 19.0。相反,您可以使用PEP 508URL来指定依赖项,即supported since Pip 18.1。以下是从
setup.py
中摘录的示例:请注意,Pip不支持从PyPI和将来的you will not be able to upload them to PyPI (see news entry for Pip 18.1)安装具有此类依赖关系的包。
您还需要确保在
install_requires
中包含依赖项。这里有一个例子
setup.py
下面是示例
setup.py
的问题:您设置的依赖项链接中缺少egg名称。
你有
https://github.com/egemsoft/esef-auth/tarball/master/#egg=1.0.0.0
你需要
https://github.com/egemsoft/esef-auth/tarball/master/#egg=esef-auth-1.0.0.0
Pip不久前删除了对依赖关系链接的支持。安装latest version of pip that supports dependency_links is 1.3.1
依赖关系链接应该在这一点上起作用。请注意,依赖关系链接始终是pip的最后手段,也就是说,如果pypi上存在同名的包,那么将选择它而不是您的包。
注意,https://github.com/pypa/pip/pull/1955似乎开始允许依赖关系链接,pip保留了它,但是您可能需要使用一些命令行开关来使用较新版本的pip。
编辑:从pip 7开始。。。他们重新考虑了dep链接,并启用了这些链接,尽管他们还没有从讨论中删除dep通知,但他们似乎仍然留在这里。使用pip>;=7,您可以安装以下内容
或者将以下内容添加到pip.conf中,例如
/etc/pip.conf
编辑
我学到的一个技巧是把版本号提高到一个非常高的值,以确保pip不喜欢非依赖链接版本(如果这是你想要的)。从上面的示例中,使依赖项链接看起来像:
还要确保版本看起来像示例或是日期版本,任何其他版本控制都会使pip认为它是dev版本,而不会安装它。
相关问题 更多 >
编程相关推荐