【问题标题】:Installing Python Dependencies locally in project在项目中本地安装 Python 依赖项
【发布时间】:2019-05-24 08:07:54
【问题描述】:

我来自 NodeJS,学习 Python,想知道如何在项目本地正确安装 requirements.txt 文件中的包。

对于节点,这是通过通过npm install 管理和安装package.json 中的包来完成的。但是,Python 项目的约定似乎是将包添加到名为 lib 的目录中。当我执行pip install -r requirements.txt 时,我认为这会在我的计算机上进行全局安装,类似于节点npm install -g 全局安装。如何在名为 lib 的文件夹中安装 requirements.txt 文件的依赖项?

【问题讨论】:

  • 通常的解决方法是创建一个虚拟环境:docs.python.org/3/tutorial/venv.html
  • 是的,我创建了一个虚拟环境,但我被告知这仅用于本地测试,我仍然应该使用lib 目录。尽管这样做似乎也适用于本地测试,因为我假设具有我所有依赖项的 lib 目录应该包含在 .gitignore 文件中。

标签: python python-2.7 pip requirements.txt


【解决方案1】:

如果您希望在特殊(非标准)本地文件夹中安装依赖项以用于特定目的(例如 AWS Lambda),请参阅此问题:install python package at current directory

对于正常的工作流程,以下是在本地安装依赖项的方式(而不是全局,相当于 npm i 而不是 Node 中的 npm i -g):


推荐的方法是使用virtual environment。您可以通过 pip 安装 virtualenv

pip install virtualenv

然后在你的项目目录下创建一个虚拟环境:

python3 -m venv env # previously: `virtualenv env`

这将创建一个名为env 的目录(您可以随意命名它),它将镜像您的全局python 安装。在env/ 内部会有一个名为lib 的目录,其中将包含Python 并存储您的依赖项。

然后激活环境:

source env/bin/activate

然后用pip安装你的依赖,它们就会安装在虚拟环境env/

pip install -r requirements.txt

然后,每当您返回项目时,再次运行 source env/bin/activate 以便找到依赖项。

当你部署你的程序时,如果部署的环境是物理服务器,或者虚拟机,你可以在生产机器上遵循同样的过程。如果部署环境是少数无服务器环境之一(例如 GCP App Engine),则提供 requirements.txt 文件就足够了。对于其他一些无服务器环境(例如 AWS Lambda),需要将依赖项包含在项目的根目录中。在这种情况下,您应该使用pip install -r requirements.txt -t ./

【讨论】:

  • 这将根据问题将软件包安装在目录site-packages而不是lib
  • @prashantrana 软件包将安装在 env/lib/pythonx.x/site-packages 中,因此不会直接安装在 lib 中,但仍会安装在 lib 中。 OP 还指出,这是一种常见的做法,因此 OP 并不希望依赖 lib 而是遵循最佳实践。使用虚拟环境是一种最佳做法。
【解决方案2】:

我建议购买 Anaconda 导航器。

你可以在这里下载:https://www.anaconda.com

Anaconda 允许您通过图形界面创建虚拟环境。您可以通过 Anaconda 下载任何可用的 pip 包。

那么在你创建并添加到你的环境之后,你要做的就是进入你指定的 python 编辑器(我主要使用 Pycharm),并在你为你的环境选择或更改解释器时设置虚拟环境解释器的路径项目。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    使用这个命令
    pip install -r requirements.txt -t <path-to-the-lib-directory>

    【讨论】:

    • 谢谢!不知道为什么这没有很好的记录。我找不到有关如何执行此操作的任何信息。我安装包的文件夹是否应该包含在.gitignore 文件中?
    • @henhen 如果您打算分发您的软件包,那么可以。更多信息link
    • 当我运行我的python文件时,如何给python解释器提供lib目录的位置?
    • @CrazyVideoGamer 创建该库的python 包,然后将其安装在您的python 环境中,您可以这样使用它或this may help
    • 我尝试过使用这种方法,但它不适用于所有软件包。见:stackoverflow.com/questions/69591041/…
    猜你喜欢
    • 1970-01-01
    • 2016-05-27
    • 2019-04-29
    • 2019-06-02
    • 2017-12-11
    • 1970-01-01
    • 2016-08-21
    • 2021-03-04
    • 2021-09-20
    相关资源
    最近更新 更多