将非 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 支持克隆 git
、git+http
、git+https
、git+ssh
、git+git
和 git+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'
我是 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 支持克隆 git
、git+http
、git+https
、git+ssh
、git+git
和 git+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'