两者之间是否有任何显着差异
pip install -e /path/to/mypackage
Run Code Online (Sandbox Code Playgroud)
和setuptools变种?
python /path/to/mypackage/setup.py develop
Run Code Online (Sandbox Code Playgroud) 我的 Python 应用程序可以以正常方式安装,也可以在开发/可编辑模式下安装pip,如下所示:
virtualenv my_app
source my_app/bin/activate
pip install -e my_app
Run Code Online (Sandbox Code Playgroud)
如何创建一个函数来检查我的 virtualenv 并检查我的应用程序是否在开发/可编辑模式下运行?
sys模块中是否有任何“标志” ?
动机:在开发模式和生产中具有不同的配置。
编辑:我比较了virtualenv和包目录。
import os
import sys
import pkg_resources
main_pkg = 'my_app'
package_dir = pkg_resources.resource_filename(main_pkg, '__init__.py')
virtualenv_dir = os.path.dirname(os.path.dirname(sys.executable))
common_path = os.path.commonprefix([package_dir, virtualenv_dir])
is_dev_mode = not common_path.startswith(virtualenv_dir)
Run Code Online (Sandbox Code Playgroud)
我测试package_dir是否是virtualenv_dir的子目录:如果它不是子目录,那么我处于开发模式。
编辑2:
有没有更可靠的解决方案?
我想知道环境中是否没有数据/标志可以清楚地向我表明我的应用程序正在开发模式下运行。
如果另一个依赖项也处于开发模式会发生什么?
我当前的 setup.py 将 git commit 哈希写入一个文件,模块在安装后可以访问该文件。但是,我想在开发模块时禁用它,因为 setup.py 文件不会被触发两次并且哈希值不准确。这给我们带来了一个问题:
有没有办法从 setup.py 判断模块是否以可编辑模式安装?IE,
Run Code Online (Sandbox Code Playgroud)pip install -e .
我在这里发现了一个类似的问题,但即使是“hack”在我的情况下也不起作用,因为模块将直接使用 git 安装,并且.git即使在安装过程中进行正常安装,该目录也会存在。