我是Python的新手,所以请耐心等待我。我正在通过pip将所有常用软件包安装到虚拟环境中,没有任何问题。但是后来我从github和我自己的库包lib中获取了外部包。我想将这些添加到我的项目中,我想保持版本控制,所以我知道何时更新。我研究的所有内容都是像
这样的代码current_path = os.path.dirname(os.path.abspath(__file__))
sys.path.append(current_path)
将包目录添加到路径中。还有一些带有相对路径的import语句的例子。
这些非pip软件包是否应该通过适当的版本控制直接安装到虚拟环境中?我如何实现这一目标?
答案 0 :(得分:1)
您可以轻松地执行此操作,因为pip支持从版本控制系统进行安装,请参阅here。
这假设您要安装的软件包有一个setup.py文件。
pip install git+git://github.com/BillMills/python-package-example.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
如果您想要使用@
并通过名称的[-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
假设我们希望安装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'