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

时间:2018-02-24 15:34:00

标签: python pip virtualenv python-packaging

我是Python的新手,所以请耐心等待我。我正在通过pip将所有常用软件包安装到虚拟环境中,没有任何问题。但是后来我从github和我自己的库包lib中获取了外部包。我想将这些添加到我的项目中,我想保持版本控制,所以我知道何时更新。我研究的所有内容都是像

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

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

这些非pip软件包是否应该通过适当的版本控制直接安装到虚拟环境中?我如何实现这一目标?

1 个答案:

答案 0 :(得分: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

标签:

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

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

假设我们希望安装GitHub here上提供的以下Python包。

我只会跑:

(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 以查看软件包是否已安装:

Command "c:\users\intel\appdata\local\programs\python\python36-32\python.exe -u -c "import setuptool
s, tokenize;__file__='C:\\Users\\Intel\\AppData\\Local\\Temp\\pip-build-vepf8y8v\\noise\\setup.py';f
=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compil
e(code, __file__, 'exec'))" install --record C:\Users\Intel\AppData\Local\Temp\pip-yim68ua0-record\i
nstall-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\User
s\Intel\AppData\Local\Temp\pip-build-vepf8y8v\noise\

正如您所看到的,安装成功并且还安装了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。导入somePython'