使用requirements.txt将可编辑工作目录pip安装到自定义路径

Fra*_*ank 5 python git pip requirements.txt

简短版本: \n是否可以在requirements.txt中使用-e参数以及可编辑包的安装路径?

\n\n
\n\n

第一种方法

\n\n

要求.txt:

\n\n
-e git+https://github.com/snake-soft/imap-storage.git#egg=imap-storage\n
Run Code Online (Sandbox Code Playgroud)\n\n

优点:自动安装

\n\n

相反:可编辑目录位于 virtualenv src 文件夹内(不在工作区中)

\n\n
\n\n

第二种方法 (编辑:在知道自己在做什么之前不要使用此方法,请看底部)

\n\n

如果我克隆存储库并像这样安装它(virtualenv 已激活):

\n\n
cd /home/user/workspace\ngit clone https://github.com/snake-soft/imap-storage.git\npip install -e .\n
Run Code Online (Sandbox Code Playgroud)\n\n

给出我想要的结构:

\n\n
workspace\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 imap-storage\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 django-project  # uses imap-storage module\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有我想要的。存储库 (imap-storage) 与使用它的 django-project 并行。\n它是可导入的,因为它安装在 virtualenv 内。

\n\n

Pro:可编辑目录位于我的工作区中

\n\n

魂斗罗:不自动化,不直观

\n\n
\n\n

目标

\n\n
    \n
  • pip install -rrequirements.txt 从 git 安装模块(就像第一种方法)
  • \n
  • 模块位于 virtualenv 的 pythonpath 中 -> 可导入
  • \n
  • 模块的可编辑工作目录位于我的工作区中(如第二种方法)
  • \n
\n\n
\n\n

PS:或者我的想法完全错误,应该选择完全不同的东西?

\n

Fra*_*ank 1

我为什么要问这么疯狂的问题?

\n\n

我认为当两个(包和使用这个包的 Django 项目)都在我的工作区中可编辑时,我可以让我的生活变得更轻松,因为我并行处理它们。

\n\n

我的 r\xc3\xa9sum\xc3\xa9

\n\n

我尝试了第二种方法,最后,我决定更喜欢第一种方法。

\n\n

原因

\n\n

使用这两种方法 pydev 都不会将其显示为已安装的包。

\n\n

当混合使用两种方法时:

\n\n
    \n
  1. 通过requirements.txt安装包(使用-e开关)
  2. \n
  3. 卸载它
  4. \n
  5. 将其克隆到(例如~/workspace/
  6. \n
  7. 使用“pip install -e”安装它。包装内
  8. \n
\n\n

那么你最终会遇到糟糕的情况。\n'virtualenv/src/'目录不会被删除,并且被识别为 pydev 内包的源。\n当运行使用该包的 Django 实例时,它会运行该包-来自“ ~/workspace/ ”的代码。

\n\n

建议

\n\n

使用第一种方法,将该源目录导入为 pydev 中的项目('virtualenv/src/'),并在您选择的文件管理器中创建一个链接。\n这将使您避免犯一个复杂的错误。

\n