python - 使用 Distribution 获取安装为 'entry_points' 的 python 控制台命令的路径

标签 python virtualenv distribute entry-point

我正在使用 entry_point dict 安装控制台命令在 setup.py 中。这会在系统中的某个路径中创建一个 python 文件(例如,debian 中的 root 是 /usr/local/bin),该文件可以根据系统或是否使用 virtualenvs 进行更改。

我需要使用 setup.py 作为入口点安装的脚本的默认路径

最佳答案

该位置可能会有所不同,具体取决于 setup.py 的各种参数,包括 --home--user- -prefix--install-scripts 等等。

如果脚本已经存在,找到它的最佳方法是扫描 $PATH 中的内容,寻找可执行文件(如 which 命令) ),但这可能不是您想要的

distutils.sysconfig模块可能会更有帮助。

$ export WORKON_HOME='/tmp/so'
$ mkvirtualenv blah
$ python
Python 2.7.2
>>> import os
>>> import distutils.sysconfig
>>> pre = distutils.sysconfig.get_config_var("prefix")
>>> bindir = os.path.join(pre, "bin")
>>> print bindir
/tmp/so/blah/bin

..例如,如果我运行 pip install pyflakes

,那么 pyflakes 最终会出现在该目录中

如果您需要查找更具体的位置,get_config_vars 字典可能会很有用:

>>> [(k, v) for (k, v) in distutils.sysconfig.get_config_vars().items() if "/tmp/so" in str(v)]
[('prefix', '/private/tmp/so/blah'), ('exec_prefix', '/private/tmp/so/blah')]

您可以通过sys模块更方便地访问其中一些变量,包括sys.prefixsys.execprefix

关于python - 使用 Distribution 获取安装为 'entry_points' 的 python 控制台命令的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9780641/

相关文章:

JavaScript 单页应用程序 - 我如何 "distribute"一个 json?

python - install_requires 基于 python 版本

python - Emacs:名为 "virtualenv"的程序不存在

pytorch - 如何从 DistributedDataParallel 学习中保存和加载模型

python - 正则表达式如何{m,n}?在 Python 中工作?

python - Python 中的内置类元类

python - 如何查看 pipenv 安装的软件包的当前版本?

python - 移动 python 2.6 分发/开发环境?

python - 有什么理由从 SVN 切换到 virtualenv 隔离的单人线性 Django 项目吗?

python - 如何让buildout给virtualenv加蛋