簡體   English   中英

如何從帶有pip的git子目錄安裝?

[英]How can I install from a git subdirectory with pip?

我有一個包含許多文件夾的git存儲庫,其中一個是可以用pip安裝的python模塊,如下所示:

repo.git/
repo.git/folder1/
repo.git/folder2/
repo.git/mymodule/
repo.git/mymodule/__init__.py
repo.git/mymodule/setup.py
repo.git/mymodule/...

現在我必須執行以下安裝:

git clone http://server/repo.git
cd repo
pip install mymodule
cd ..
rm -rf repo

是否可以直接使用pip安裝模塊而無需明確克隆?

我試過了:

pip install git+https://server/repo.git/mymodule/
pip install git+https://server/repo.git:mymodule/

但我得到:

IOError: [Errno 2] No such file or directory: '/tmp/pip-88tlLm-build/setup.py'

有一個關於此功能的拉取請求 ,似乎已經合並到一個月前開發分支。 語法如下

pip install -e git+https://git.repo/some_repo.git#egg=version_subpkg&subdirectory=repo # install a python package from a repo subdirectory

我們可能需要等待一段時間,直到它合並為master並分發。

更新 :現在可以在https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support上找到並記錄如下:

對於setup.py不在項目根目錄中的項目,使用“子目錄”組件。 “子目錄”組件的值應該是從項目的根目錄到setup.py所在的路徑。

因此,如果您的存儲庫布局是:

 - pkg_dir/ - setup.py # setup.py for package ``pkg`` - some_module.py - other_dir/ - some_file - some_other_file 

你需要使用

 pip install -e vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir 

注意:在Windows上,您必須將URL放在雙引號中,否則您將收到錯誤“'子目錄'未被識別為內部或外部命令”。 例如,使用:

 pip install -e "vcs+protocol://repo_url#egg=pkg&subdirectory=pkg_dir" 

在正確答案中的一條評論中已經說明了這一點,但只是為了強調這個問題:當從Linux命令行執行此操作時, 必須轉義& -character,因為&符號告訴命令行在后台運行命令:

git+https://git.repo/some_repo.git#egg=version_subpkg\&subdirectory=repo

注意&符號之前的反斜杠。 轉義行為可能取決於Linux發行版; 我不是專家。
如果忽略這一點,您可能會遇到如下所述的神秘錯誤:

bash: (...) command not found

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM