【问题标题】:installing a non-PyPi package into virtual environment将非 PyPi 包安装到虚拟环境中
【发布时间】:2018-08-04 11:48:37
【问题描述】:

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

current_path = os.path.dirname(os.path.abspath(__file__)) 
sys.path.append(current_path) 

这会将包目录添加到路径中。还有一些带有相对路径的 import 语句示例。

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

【问题讨论】:

  • “非 pip 包”是什么意思?未在 PyPI 上发布的 Python 包?还是非python库?
  • PyPi 上的包。为了清楚起见,我编辑了问题。

标签: python pip virtualenv python-packaging


【解决方案1】:

您可以轻松做到这一点,因为 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

如果您想要一个测试版或针对您的特定发行版的分支等,您还可以通过使用@ 并传递分支名称来要求从特定分支、提交哈希或标记名称安装/提交哈希/标签名称:

分支:

[-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

这是一个真实的用例 (Git):

假设我们希望安装以下 Python 包,该包可在 GitHub here 上找到。

我会跑:

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 .导入一些Python'

【讨论】:

    猜你喜欢
    • 2013-05-19
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2016-09-11
    • 2020-01-09
    相关资源
    最近更新 更多