将非 PyPi 包安装到虚拟环境中

installing a non-PyPi package into virtual environment

我是 Python 的新手,所以请耐心等待。我正在通过 pip 毫无问题地将所有常用软件包安装到虚拟环境中。但是还有我从 github 和我自己的库包 lib 中获取的外部包。我想将这些添加到我的项目中,并且我想维护版本控制,以便我知道何时更新。我在研究时看到的只是像

这样的代码
current_path = os.path.dirname(os.path.abspath(__file__)) 
sys.path.append(current_path) 

将包目录添加到路径中。还有使用相对路径的 import 语句的示例。

难道不应该将这些非 pip 包直接安装到具有适当版本控制的虚拟环境中吗?我该如何实现?

您可以轻松做到这一点,因为 pip 支持从版本控制系统安装,请参阅 here

这假定您要安装的软件包有一个 setup.py 文件。

pip install git+git://github.com/BillMills/python-package-example.git

Git

(主要是提取形式here)

Pip 支持克隆 gitgit+httpgit+httpsgit+sshgit+gitgit+file.

[-e] git://git.myproject.org/MyProject#egg=MyProject
[-e] git+http://git.myproject.org/MyProject#egg=MyProject
[-e] git+https://git.myproject.org/MyProject#egg=MyProject
[-e] git+ssh://git.myproject.org/MyProject#egg=MyProject
[-e] git+git://git.myproject.org/MyProject#egg=MyProject
[-e] git+file://git.myproject.org/MyProject#egg=MyProject
-e git+git@git.myproject.org:MyProject#egg=MyProject

如果您想要测试版或针对您的特定发行版等的分支,您还可以要求从特定分支、提交哈希或标记名称安装,方法是使用 @ 并传递branch/commit hash/tag 名称:

分支机构:

[-e] git://git.myproject.org/MyProject.git@master#egg=MyProject

提交有:

[-e] git://git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=MyProject

标签:

git://git.myproject.org/MyProject.git@v1.0#egg=MyProject

这里有一个real-worlduse-case(Git):

假设我们希望安装 GitHub here.

上可用的以下 Python 软件包

干脆我会运行:

pip install git+git://github.com/BillMills/python-package-example.git

结果如下:

(test) pc-207-126:Desktop rafael$ pip install git+git://github.com/BillMills/python-package-example.git
Collecting git+git://github.com/BillMills/python-package-example.git
  Cloning git://github.com/BillMills/python-package-example.git to /private/var/folders/c_/8qcnm5sj3kg7_f887qv473tm0000gn/T/pip-mx1vcsod-build
Collecting numpy (from python-package-example==0.1)
  Downloading numpy-1.14.1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.7MB)
    100% |████████████████████████████████| 4.7MB 305kB/s
Installing collected packages: numpy, python-package-example
  Running setup.py install for python-package-example ... done
Successfully installed numpy-1.14.1 python-package-example-0.1

如果我现在运行pip freeze查看包是否安装:

(test) pc-207-126:Desktop rafael$ pip freeze
numpy==1.14.1
python-package-example==0.1

如您所见,安装成功并且还安装了 Python-Package-Example(即 numpy)的一些依赖项。

注意: github.com/BillMills/python-package-example.git 使用 Python 2 语法。有关包含 Python 3 语法的示例,请参阅 https://github.com/kennethreitz/samplemod。区别在于 init 中的导入语法,python 2 使用 'import somePython' 而 python 3 使用 'from . import somePython'