似乎同时使用--editable
时不支持--target
。 使它正常工作会很好。 同时,应该有一些更好的诊断方法,例如
c:\>pip install -t z:\1 -e git+https://github.com/kennethreitz/requests.git#egg=requests
结果是
Obtaining requests from git+https://github.com/kennethreitz/requests.git#egg=requests
Updating c:\python\virtualenv\test\src\requests clone
Running setup.py egg_info for package requests
Downloading/unpacking certifi>=0.0.7 (from requests)
Running setup.py egg_info for package certifi
Downloading/unpacking oauthlib>=0.1.0,<0.2.0 (from requests)
Running setup.py egg_info for package oauthlib
Downloading/unpacking chardet>=1.0.0 (from requests)
Running setup.py egg_info for package chardet
Downloading/unpacking rsa (from oauthlib>=0.1.0,<0.2.0->requests)
Running setup.py egg_info for package rsa
warning: no files found matching 'README'
Downloading/unpacking pyasn1>=0.0.13 (from rsa->oauthlib>=0.1.0,<0.2.0->requests)
Running setup.py egg_info for package pyasn1
Installing collected packages: requests, certifi, oauthlib, chardet, rsa, pyasn1
Running setup.py develop for requests
usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: -c --help [cmd1 cmd2 ...]
or: -c --help-commands
or: -c cmd --help
error: option --home not recognized
Complete output from command c:\python\virtualenv\test\Scripts\python.exe -c "import setuptools; __file__='c:\\python\\virtualenv\\test\\src\\requests\\setup.py'; exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps --home=c:\users\piotr\appdata\local\temp\tmp3abskl:
usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: -c --help [cmd1 cmd2 ...]
or: -c --help-commands
or: -c cmd --help
error: option --home not recognized
----------------------------------------
Command c:\python\virtualenv\test\Scripts\python.exe -c "import setuptools; __file__='c:\\python\\virtualenv\\test\\src\\requests\\setup.py'; exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps --home=c:\users\piotr\appdata\local\temp\tmp3abskl failed with error code 1 in c:\python\virtualenv\test\src\requests
Storing complete log in C:\Users\Piotr\AppData\Roaming\pip\pip.log
同时遇到pip install -t dir -e git+git://github.com/shazow/urllib3.git@f088037#egg=urllib3
错误。
我现在也遇到了这个错误。
如果将--target
和--editable
组合在一起,这似乎会发生在任何包装上:
pip调用setup.py develop --home ...
,但是--home
仅适用于setup.py install
。
因此,最后我发现使用--src
选项和可编辑包而不是--target
可以满足我的要求。
当指定了--editable
--src
时,也许--target
应该与--src
具有相同的效果,否则它可能会向用户显示错误消息并可能将用户指向--src
。
指定--editable时--target可能与--src具有相同的效果
IMO预期的行为将在target
目录中创建/更新easy_install.pth。
我只是遇到了同样的问题。 正如@jezdez所建议的,您可以通过执行以下操作来解决此问题(不使用--editable):
git+ssh://[email protected]/some-user/some-repo.git#egg=Foo
我自己在这里也遇到了类似的问题:
Cleaning up...
Exception:
Traceback (most recent call last):
File "/efs/dev/bti/pip/1.3.1-build001/install/exec/2.7/lib/python/pip-1.3.1-py2.7.egg/pip/basecommand.py", line 139, in main
status = self.run(options, args)
File "/efs/dev/bti/pip/1.3.1-build001/install/exec/2.7/lib/python/pip-1.3.1-py2.7.egg/pip/commands/install.py", line 291, in run
for item in os.listdir(lib_dir):
OSError: [Errno 2] No such file or directory: '/tmp/tmppjdGHI/lib/python'
pip / commands / install.py中的第290行是:
lib_dir = home_lib(temp_target_dir)
根据我的追踪,pip已在pip / req.py第1194行中清除了此路径,在其中删除了临时源。
requirement.remove_temporary_source()
我可以看到清理工作仍然存在,但是将其包装成一个存在或尝试的块,以便安装可以继续进行。 有人认为这是一个问题吗?
@tima我在lib目录中有同样的问题。 据说HEAD可以解决此问题,但至少在CentOS上,问题仍然存在。 在此特定情况下,存在一个lib64目录而不是一个lib目录。
我在使用--target
遇到了相同的问题(但没有--editable
)。
这是我的回溯
Exception:
Traceback (most recent call last):
File "/Users/beaum/homebrew/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/basecommand.py", line 139, in main
status = self.run(options, args)
File "/Users/beaum/homebrew/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/install.py", line 294, in run
for item in os.listdir(lib_dir):
OSError: [Errno 2] No such file or directory: '/var/folders/00/1hyxr000h01000cxqpysvccm0063vq/T/tmpc_E_Bl/lib/python'
+1,
正在下载PyYAML-3.10.tar.gz(241kB):已下载241kB 为包pyyaml运行setup.py egg_info 跳过“ ext / _yaml.c” Cython扩展名(最新) 安装收集的软件包:krcore,sympy,pyparsing,pyyaml 为krcore运行setup.py开发 用法:-c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] 或:-c --help [cmd1 cmd2 ...] 或:-c --help-commands 或:-c cmd --help 错误:选项--home无法识别 来自命令/ usr / bin / python -c“ import setuptools;的完整输出; __file __ ='/ tmp / krapp / src / krcore / setup.py'; exec(compile(open(__ file __)。read()。replace('\ r \ n','\ n'),__ file __,'exec'))“开发--no-deps --home = / tmp / tmpvKaRYp: 用法:-c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] 或:-c --help [cmd1 cmd2 ...] 或:-c --help-commands 或:-c cmd --help 错误:选项--home无法识别 ---------------------------------------- 打扫干净... 命令/ usr / bin / python -c“ import setuptools; __file __ ='/ tmp / krapp / src / krcore / setup.py'; exec(compile(open(__ file __)。read()。replace('\ r \ n ','\ n'),__file__,'exec'))“开发--no-deps --home = / tmp / tmpvKaRYp在/ tmp / krapp / src / krcore中失败,错误代码为1
将-target与-r一起使用时(--requirements),出现“错误:选项--home无法识别”
:+1:
以下@YorickPeterse和@jezdez解决方法导致:
错误:必须提供home或prefix / exec-prefix-不能同时提供
--editable和--target选项不能一起使用
我一直遇到同样的问题...
我试图使用pip在自定义位置(而不是virtualenv)安装python包,我需要其中一个(我正在研究的)可编辑。
这可能与https://github.com/pypa/setuptools/issues/392有关
而且由于一个pip命令可以同时触发setup.py develop
(对于可编辑的pkg)和setup.py install
(依赖项),所以我想到的唯一(非常难看)的解决方法是发出2个命令:
--no-deps
pkg如果不需要更改--editable
是否传递其他pip命令行选项,则将更加干净。
所以我想有两种方法可以使它起作用:
--home
即。 修复https://github.com/pypa/setuptools/issues/392。 阅读该问题的详细信息可能会很棘手?setup.py develop
或setup.py install
不同地实现--target
行为。 也许更简单?具有pip abstract setuptools详细信息,并根据调用
setup.py develop
或setup.py install
不同地实现--target
行为。 也许更简单?
使用此选项的最大困难在于,pip正在努力抽象出构建系统(setuptools)的详细信息,因此针对setuptools问题的特殊解决方法无法达到该目标。
最后,我设法使用--prefix
来做我想做的事,而没有使用任何自定义--install-option
,所以无论是否传递--editable
,我最终都可以使用相同的选项。
但是我不得不以某种方式调整现有的(debian)布局以匹配pip的默认值(site-packages),因为没有pip选项来指定布局...
也许是考虑添加的功能?
@xavfernandez
这需要--target option
标签。
有人可以分享一下同时使用-e和-t选项的最佳解决方法吗? 您是否建议使用distutils,因为它支持'--home'选项?
任何新闻?
我仍在将--editable
与--prefix
(而不是--target
)一起使用,这对我来说很有用。 但是由于--prefix
和--target
之间的差异,我被困在pip <9.0.0上。 更多细节在https://github.com/pypa/pip/issues/4243
如果要使用--prefix选项而不是--target,则需要正确设置PYTHONPATH
(指向要创建的站点软件包目录),然后才能调用pip -t . --prefix myprefix
。 有没有一种优雅的方法来规避这一点?
即将结束,将一堆相关问题移至一个问题:#4390。
我要补充一点,对于Google Appengine开发人员来说,这是一个问题,他们需要将其依赖项安装在应用程序根目录中的目录中,还需要在质量检查过程中在本地结帐中部署可编辑的依赖项。 就目前而言,可编辑文件需要手动符号链接,这很麻烦。
该线程已被自动锁定,因为它关闭后没有任何近期活动。 请为相关错误打开新一期。
最有用的评论
我要补充一点,对于Google Appengine开发人员来说,这是一个问题,他们需要将其依赖项安装在应用程序根目录中的目录中,还需要在质量检查过程中在本地结帐中部署可编辑的依赖项。 就目前而言,可编辑文件需要手动符号链接,这很麻烦。