簡體   English   中英

如何像 npm 一樣在本地使用 pip install python 包

[英]How to use pip install python packages locally like npm does

假設我有一個名為Foo的項目,並且想要為該項目在本地安裝requests包。 我期待的是一些類似於這樣的結構:

Foo/
|-main.py
|-requirements.txt
|-README.md
|-python_modules/
|-|-requests
...

我可以通過pip install -r requirments.txt -t ./python_modules/來做到這pip install -r requirments.txt -t ./python_modules/ ,但是,這不能正常工作,因為python_modules/下沒有__init__.py所以程序不會自動導入python_modules每個包。

另一方面, npm install做得很好。

所以我的問題是,如何讓pipnpm一樣工作?

PS:我知道還有其他使用virtualenvpythonbrew ,但我仍然想問這個問題。

自從第一次提出這個問題以來,這個方向已經有了一些進展。 已經提出了一個Python 增強提案來建議這樣一個特性: PEP 582“ Python 本地包目錄 雖然它仍然是一個草案,但是......

有一些工具已經實現了這個PEP 我所知道的最高級的是PDM-Python Development Master 另一個是Pyflow

我相信兩者(特別是pdm )都會提供類似於npm及其node_modules

其他一些提到:

在 Python 世界中,解決這個問題的通常方法是使用 virtualenvs,或者更好的是,使用像 pipenv 這樣的包裝器。 如果你安裝了 pipenv,你應該能夠通過一個簡單的pipenv install創建一個新的 virtualenv:

[user@host Foo]$ pipenv install
Creating a virtualenv for this
project… ⠋Using base prefix '/usr' New python executable in
/home/user/.local/share/virtualenvs/Foo-oXnKEj-P/bin/python3 Also
creating executable in
/home/user/.local/share/virtualenvs/Foo-oXnKEj-P/bin/python Installing
setuptools, pip, wheel...done.

Virtualenv location: /home/user/.local/share/virtualenvs/Foo-oXnKEj-P
Creating a Pipfile for this project… Pipfile.lock not found, creating…
Locking [dev-packages] dependencies… Locking [packages] dependencies…
Updated Pipfile.lock (c23e27)!  Installing dependencies from
Pipfile.lock (c23e27)… �� ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 —
00:00:00 To activate this project's virtualenv, run the following: $
pipenv shell

然后用pipenv shell進入virtualenv

[user@host Foo]$ pipenv shell
Spawning environment shell
(/bin/bash). Use 'exit' to leave. source
/home/user/.local/share/virtualenvs/Foo-oXnKEj-P/bin/activate

[user@host Foo]$ source /home/user/.local/share/virtualenvs/Foo-oXnKEj-P/bin/activate

最后,您可以在 requirements.txt 中安裝軟件包:

(Foo-oXnKEj-P) [user@host Foo]$ pip install -r requirements.txt
Collecting Django==2.0.4 (from -r requirements.txt (line 1)) Using
cached
https://files.pythonhosted.org/packages/89/f9/94c20658f0cdecc2b6607811e2c0bb042408a51f589e5ad0cb0eac3236a1/Django-2.0.4-py3-none-any.whl
Collecting pytz (from Django==2.0.4->-r requirements.txt (line 1))
Using cached
https://files.pythonhosted.org/packages/dc/83/15f7833b70d3e067ca91467ca245bae0f6fe56ddc7451aa0dc5606b120f2/pytz-2018.4-py2.py3-none-any.whl
Installing collected packages: pytz, Django Successfully installed
Django-2.0.4 pytz-2018.4

(Foo-oXnKEj-P) [user@host Foo]$

您還可以將poetry與本地poetry .toml 配置一起使用

[virtualenvs]
in-project = true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM