使用 pip 将 Python 包安装到不同的目录中?

2024-12-11 08:48:00
admin
原创
191
摘要:问题描述:我知道显而易见的答案是使用 virtualenv 和 virtualenvwrapper,但由于各种原因我不能/不想这样做。那么我该如何修改命令pip install package_name 将pip软件包安装在默认位置以外的其他地方site-packages?解决方案 1:--target开关就...

问题描述:

我知道显而易见的答案是使用 virtualenv 和 virtualenvwrapper,但由于各种原因我不能/不想这样做。

那么我该如何修改命令

pip install package_name

pip软件包安装在默认位置以外的其他地方site-packages


解决方案 1:

--target开关就是您要寻找的东西:

pip install --target d:somewhereother    han    hedefault package_name

但您仍然需要添加d:somewhereother han hedefault才能PYTHONPATH从该位置实际使用它们。

-t, --target <dir>

将软件包安装到 <dir>。默认情况下,这不会替换 <dir> 中现有的文件/文件夹。

使用 --upgrade 用新版本替换 <dir> 中现有的软件包。


如果目标切换不可用,请升级 pip:

在 Linux 或 OS X 上:

pip install -U pip

在 Windows 上(这可以解决一个问题):

python -m pip install -U pip

解决方案 2:

使用:

pip install --install-option="--prefix=$PREFIX_PATH" package_name

您可能还想使用--ignore-installed强制使用此新前缀重新安装所有依赖项。您可以--install-option多次使用来添加任何可以使用的选项python setup.py install--prefix这可能是您想要的,但还有许多其他选项可以使用)。

解决方案 3:

除了--target--install-options选项之外,我发现设置环境变量效果更好(来自有关此问题的一个错误PYTHONUSERBASE的讨论):

PYTHONUSERBASE=/path/to/install/to pip install --user

(或者PYTHONUSERBASE在运行命令之前使用 设置环境中的目录export PYTHONUSERBASE=/path/to/install/to

这使用了非常有用的选项,但告诉它在自定义前缀而不是下--user创建binlib和其他您期望的目录。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仍然是一个更好、更简洁的解决方案!

解决方案 4:

为了将库准确地安装到我想要的位置,我使用终端导航到我想要的目录,然后使用

pip install mylibraryName -t . 

我从此页面获取了其中的逻辑:https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/download

解决方案 5:

安装 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等,有关详细信息,请参阅自定义安装选项),否则包中包含的任何可执行文件/数据/脚本仍将转到其默认位置。

解决方案 6:

使用 python3.5 和 pip 9.0.3 测试了这些选项:

pip 安装--target /myfolder [软件包]

安装 /myfolder 下的所有包(包括依赖项)。不考虑已在 Python 其他地方安装的依赖包。您将从 /myfolder/[package_name] 找到包。如果您有多个 Python 版本,则不会考虑这一点(包文件夹名称中没有 Python 版本)。

pip install --prefix /myfolder [软件包]

检查依赖项是否已安装。将安装包到 /myfolder/lib/python3.5/site-packages/[packages]

pip 安装--root/我的文件夹[软件包]

检查依赖项(例如 --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。

解决方案 7:

pip install "package_name" -t "target_dir"

来源-https: //pip.pypa.io/en/stable/reference/pip_install/

-t 开关 = 目标

解决方案 8:

似乎没有人提到 -t 选项,但最简单的是:

pip install -t <direct directory> <package>

解决方案 9:

pip install packageName -t pathOfDirectory

或者

pip install packageName --target pathOfDirectorty

解决方案 10:

只需在@Ian Bicking 的回答中添加一点:

--user如果想要在远程服务器上将某些 Python 包安装到自己的主目录中(无需 sudo 用户权限),使用指定安装目录的选项也是可行的。

例如,

pip install --user python-memcached

该命令会将包安装到 PYTHONPATH 中列出的目录之一中。

解决方案 11:

较新的版本pip(8 或更高版本)可以直接使用该--prefix选项:

pip install --prefix=$PREFIX_PATH package_name

其中$PREFIX_PATH是安装前缀,其中放置了 lib、bin 和其他顶级文件夹。

解决方案 12:

除了已经很好的建议之外,我还遇到了安装IPython时没有写入权限的问题/usr/local

pip 使用 distutils 进行安装,并且该线程讨论了由于依赖于sys.prefix设置而导致的问题。

我的问题发生在 IPython 安装尝试写入 '/usr/local/share/man/man1' 时,权限被拒绝。由于安装失败,它似乎没有将 IPython 文件写入 bin 目录中。

使用“--user”有效,文件被写入~/.local。将~/.local/bin添加到$PATH意味着我可以从那里使用“ipython”。

但是,我尝试为多个用户安装此程序,并且已获得该/usr/local/lib/python2.7目录的写入权限。我在该目录下创建了一个“bin”目录,并为 distutils 设置了指令:

vim ~/.pydistutils.cfg

[install]
install-data=/usr/local/lib/python2.7
install-scripts=/usr/local/lib/python2.7/bin

然后(-I用于强制安装,尽管之前失败/.local 安装):

pip install -I ipython

然后我又补充/usr/local/lib/python2.7/bin$PATH

我想我应该把这个包括在内,以防其他人在没有 sudo 访问权限的机器上遇到类似的问题。

解决方案 13:

site-packages在不使用虚拟环境的情况下从其他地方(而不是从默认位置)安装 python 包,您可以使用--target-tpip install

在较新版本中pip,该--python选项还提供了指定 Python 解释器的另一种方法。

--target例子:
pip install package_name --target /path/to/custom_directory
--python例子:
pip install package_name --python /path/to/specific/python
语义--target
  1. 将包安装到指定目录,绕过默认目录site-packages

  2. 不会创建虚拟环境或安装任何 Python 二进制文件,而只是安装软件包和依赖项

  3. 必须管理PYTHONPATH在运行时可用的包

--target和 的比较--python

从 开始pip 21.3pip添加了--python选项,允许指定用于安装包的 Python 解释器。与 不同--target--python主要用于在全局安装包时选择 Python 解释器。

选项关键点
--target- 安装到自定义目录- 需要调整路径,如PYTHONPATHsys.path- 适用于独立设置
--python- 安装到特定的解释器site-packages- 直接影响全局或虚拟环境- 适用于特定解释器的安装

用例:

  • 如果你需要在非标准目录中安装软件包,请使用--target

  • 如果你需要为特定的 Python 解释器全局安装软件包,请使用--python

这两种选择都可以避免虚拟环境,但实现的目标不同。

解决方案 14:

如果您在 python 中使用 brew,很遗憾,pip/pip3 附带的选项非常有限。您没有上面提到的 --install-option、--target、--user 选项。

关于 pip install --user 的注意事项

对于 brewed Python,正常的 pip install --user 是禁用的。这是因为 distutils 中有一个错误,因为 Homebrew 编写了一个设置包前缀的 distutils.cfg。一个可能的解决方法(将可执行脚本放在 ~/Library/Python/./bin 中)是:
python -m pip install --user --install-option="--prefix=" <package-name>

你可能会觉得这一行很麻烦。我建议使用 pyenv 进行管理。如果你正在使用

brew upgrade python python3

讽刺的是,你实际上正在降级pip 功能。

(我发布这个答案,只是因为我的 mac osx 中的 pip 没有 --target 选项,而且我花了几个小时来修复它)

解决方案 15:

pip install /path/to/package/

现在是可能的。

这与使用-e--editable标志的区别在于-e链接到包的保存位置(即您的下载文件夹),而不是将其安装到您的 python 路径中。

这意味着如果您删除或移动该包到另一个文件夹,您将无法使用它。

解决方案 16:

  • 选项--target用于在指定的目标目录中安装python包。

  • 选项--python用于指定用于安装的python解释器。

--target 特定于 pip install 命令,而 --python 也可用于其他 pip 命令。换句话说,您可以在同一个命令中同时使用 --target 和 --python。

例如,以下命令在 E:\mycode\test4 中的虚拟环境中运行,但使用安装在 c:\programs\python 中的 python 解释器在 c:\env\env1 中安装枕头。

(.venv) E:mycode    est4>pip --python c:programspythonpython.exe  install pillow  --target C:envenv1

解决方案 17:

v1.5.6使用Python v2.7.3(GNU/Linux)上的pip ,选项--root允许指定全局安装前缀,(显然)与特定包的选项无关。尝试 fi,

$ pip install --root=/alternative/prefix/path package_name

解决方案 18:

我建议按照文档创建 ~/.pip/pip.conf 文件。请注意,文档中缺少指定的标头目录,这会导致以下错误:

error: install-base or install-platbase supplied, but installation scheme is incomplete

conf文件的完整工作内容是:

[install]
install-base=$HOME
install-purelib=python/lib
install-platlib=python/lib.$PLAT
install-scripts=python/scripts
install-headers=python/include
install-data=python/data

不幸的是,我可以安装,但是当尝试卸载 pip 时告诉我卸载过程没有这样的包......所以仍然有问题,但包会转到其预定义的位置。

解决方案 19:

system` 选项,将安装 pip package-bins 到所有用户都可以访问的 /usr/local/bin。不使用此选项进行安装可能不适用于所有用户,因为内容会转到用户特定的目录,如 $HOME/.local/bin,然后是用户特定的安装,必须为所有用户重复此操作,而且如果没有为用户设置路径,则可能存在路径问题,然后 bins 将无法工作。因此,如果您正在寻找所有用户 - 您需要具有 sudo 访问权限:

sudo su - 
python3 -m pip install --system <module>
logout
log back in 
which <module-bin> --> it should be installed on /usr/local/bin/

解决方案 20:

有时它只适用于 Cache 参数

-m pip install -U pip --target=C:xxxpythonlibsite-packages Pillow --cache-dir C:    mp

解决方案 21:

使用:

pip install package_name -t directory_path

如果出现以下错误:

错误:无法组合“--user”和“--target”

使用:

pip install package_name -t directory_path --no-user

例如 pip install pandas -t C:Users/userDesktopFamily est --no-user

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3998  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2749  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   85  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   96  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   83  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用