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

min*_*gyc 6 python pip path package-managers npm

假设我有一个名为的项目Foo,并且想要在requests本地为该项目安装软件包.我期待的是一些类似于此的结构:

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

我能做到这一点的pip install -r requirments.txt -t ./python_modules/,但是,这并不正确,因为没有工作,__init__.pypython_modules/这样的程序将无法在自动导入每个包python_modules.

另一方面,npm install这很好.

所以我的问题是,如何让pip工作与此相同npm

PS:我知道还有其他惯例使用virtualenvpythonbrew,但我还是想问这个问题.

小智 1

在 Python 世界中,解决这个问题的通常方法是使用 virtualenvs,或者更好的是使用像 pipelinev 这样的包装器。如果您安装了 pipelinev,您应该能够使用简单的命令创建一个新的 virtualenv pipenv install

\n\n
[user@host Foo]$ pipenv install\nCreating a virtualenv for this\nproject\xe2\x80\xa6 \xe2\xa0\x8bUsing base prefix '/usr' New python executable in\n/home/user/.local/share/virtualenvs/Foo-oXnKEj-P/bin/python3 Also\ncreating executable in\n/home/user/.local/share/virtualenvs/Foo-oXnKEj-P/bin/python Installing\nsetuptools, pip, wheel...done.\n\nVirtualenv location: /home/user/.local/share/virtualenvs/Foo-oXnKEj-P\nCreating a Pipfile for this project\xe2\x80\xa6 Pipfile.lock not found, creating\xe2\x80\xa6\nLocking [dev-packages] dependencies\xe2\x80\xa6 Locking [packages] dependencies\xe2\x80\xa6\nUpdated Pipfile.lock (c23e27)!  Installing dependencies from\nPipfile.lock (c23e27)\xe2\x80\xa6 \xef\xbf\xbd\xef\xbf\xbd \xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89\xe2\x96\x89 0/0 \xe2\x80\x94\n00:00:00 To activate this project's virtualenv, run the following: $\npipenv shell\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后输入 virtualenvpipenv shell

\n\n
[user@host Foo]$ pipenv shell\nSpawning environment shell\n(/bin/bash). Use 'exit' to leave. source\n/home/user/.local/share/virtualenvs/Foo-oXnKEj-P/bin/activate\n\n[user@host Foo]$ source /home/user/.local/share/virtualenvs/Foo-oXnKEj-P/bin/activate\n
Run Code Online (Sandbox Code Playgroud)\n\n

最后,您可以在requirements.txt中安装软件包:

\n\n
(Foo-oXnKEj-P) [user@host Foo]$ pip install -r requirements.txt\nCollecting Django==2.0.4 (from -r requirements.txt (line 1)) Using\ncached\nhttps://files.pythonhosted.org/packages/89/f9/94c20658f0cdecc2b6607811e2c0bb042408a51f589e5ad0cb0eac3236a1/Django-2.0.4-py3-none-any.whl\nCollecting pytz (from Django==2.0.4->-r requirements.txt (line 1))\nUsing cached\nhttps://files.pythonhosted.org/packages/dc/83/15f7833b70d3e067ca91467ca245bae0f6fe56ddc7451aa0dc5606b120f2/pytz-2018.4-py2.py3-none-any.whl\nInstalling collected packages: pytz, Django Successfully installed\nDjango-2.0.4 pytz-2018.4\n\n(Foo-oXnKEj-P) [user@host Foo]$\n
Run Code Online (Sandbox Code Playgroud)\n