我知道明显的答案是使用virtualenv和virtualenvwrapper,但出于各种原因我不能/不想这样做.
那么我该如何修改命令呢
pip install package_name
使pip
安装默认值以外的包某处site-packages
?
该--target开关是你正在寻找的东西:
pip install --target = d:\ somewhere\other\than\the\default package_name
但是你仍然需要添加d:\somewhere\other\than\the\default
以PYTHONPATH
实际从该位置使用它们.
如果目标交换机不可用,则升级pip:
在Linux或OS X上:
pip install --target=d:\somewhere\other\than\the\default package_name
在Windows上(这解决了一个问题):
pip install -U pip
使用:
pip install --install-option="--prefix=$PREFIX_PATH" package_name
您可能还希望--ignore-installed
使用此新前缀强制重新安装所有依赖项.您可以--install-option
多次使用来添加可以使用的任何选项python setup.py install
(--prefix
可能是您想要的,但您可以使用更多选项).
而不是--target
选项或--install-options
选项,我发现以下工作正常(在https://github.com/pypa/pip/issues/446上讨论关于这个问题的bug ):
PYTHONUSERBASE=/path/to/install/to pip install --user
(或者PYTHONUSERBASE
在运行命令之前在您的环境中设置目录,使用export PYTHONUSERBASE=/path/to/install/to
)
它使用了非常有用的--user
选项,但告诉它使bin
,lib
,share
你会在一个自定义的前缀期待,而不是和其他目录$HOME/.local
.
然后,你可以到你添加这个PATH
,PYTHONPATH
你将一个正常的安装目录和其他变量.
请注意,如果任何依赖于此类的软件包需要在目录中安装较新版本,则可能还需要指定--upgrade
和--ignore-installed
选项PYTHONUSERBASE
,以覆盖系统提供的版本.
一个完整的例子:
PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy
..将最新版本安装scipy
并numpy
打包到一个目录中,然后可以将其包含在您的目录中PYTHONPATH
(在本例中使用bash和CentOS 6上的python 2.6):
export PYTHONPATH=/opt/mysterypackage-1.0/python-deps/lib64/python2.6/site-packages:$PYTHONPATH export PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH
使用virtualenv仍然是一个更好,更整洁的解决方案!
安装Python包通常只包含一些纯Python文件.如果程序包包含数据,脚本和/或可执行文件,则这些程序包安装在与纯Python文件不同的目录中.
假设您的软件包没有数据/脚本/可执行文件,并且您希望Python文件进入/python/packages/package_name
(而不是/python/packages
使用下面几个级别的某个子目录--prefix
),您可以使用一次性命令:
pip install --install-option="--install-purelib=/python/packages" package_name
如果您想要所有(或大部分)包裹去那里,您可以编辑您~/.pip/pip.conf
的包括:
[install] install-option=--install-purelib=/python/packages
这样你就不会忘记必须一次又一次地指定它.
除非您指定添加安装选项(--prefix
/ --install-data
/ --install-scripts
等,详细信息请查看自定义安装选项),否则程序包中包含的任何excecutable/data/scripts仍将转到其默认位置.
为了将库安装到我想要的地方,我导航到了我希望目录与终端然后使用的位置
pip install mylibraryName -t .
我从这个页面采取的逻辑:https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/download
似乎没有人提到-t选项,但最简单:
pip install -t
只需在@Ian Bicking的答案中添加一点:
--user
如果想要在远程服务器上将某个Python包安装到一个主目录(没有sudo用户权限),则使用指定安装目录的选项也可以使用.
例如,
pip install --user python-memcached
该命令会将程序包安装到PYTHONPATH中列出的某个目录中.
较新版本的pip
(8或更高版本)可以直接使用该--prefix
选项:
pip install --prefix=$PREFIX_PATH package_name
这里$PREFIX_PATH
是其中lib,bin和其他顶级文件夹放置安装前缀.
使用python3.5和pip 9.0.3测试了这些选项:
pip install --target / myfolder [程序包]
在/ myfolder下安装所有软件包,包括依赖项。不考虑依赖包已在Python中的其他位置安装。您可以从/ myfolder / [package_name]中找到软件包。如果您有多个Python版本,则无需考虑(软件包文件夹名称中没有Python版本)。
pip install --prefix / myfolder [软件包]
检查是否已安装依赖项。将安装包到/myfolder/lib/python3.5/site-packages/[packages]
pip install --root / myfolder [软件包]
检查--prefix之类的依赖项,但是安装位置将为/myfolder/usr/local/lib/python3.5/site-packages/[package_name]。
pip install --user [软件包]
会将软件包安装到$ HOME中:/home/[USER]/.local/lib/python3.5/site-packages Python会自动从此.local路径搜索,因此您无需将其放入PYTHONPATH。
=>在大多数情况下,--user是最佳选择。如果由于某种原因无法使用主文件夹,请使用--prefix。
pip install packageName -t pathOfDirectory
要么
pip install packageName --target pathOfDirectorty