【发布时间】:2018-03-23 09:48:14
【问题描述】:
我正在尝试了解如何使用命令行脚本安装 Python 包。我的意思是安装一个包,例如pip install package 然后能够在任何目录中运行 package,即 package 应该在我的路径上。
我正在关注this guide,它创建了一个最小的工作示例,您使用pip install . 安装包。
这里有两种选择,一种是在entry_points 中使用console_scripts,另一种是使用scripts 并创建一个bin 文件夹并将可执行脚本放入其中。更详细:
第一种方法:scripts
添加目录bin,与funniest 包在同一目录中。所以:
funniest/
__init__.py
text.py
bin/
funniest-joke
funniest-joke 文件是
#!/usr/bin/env python
import funniest
print(funniest.joke())
在setup.py 中,添加scripts=['bin/funniest-joke'] 作为setup 函数调用中的参数。
第二种方法:console_scripts
在text.py和__init__.py旁边添加一个command_line.py文件,即
import funniest
def main():
print funniest.joke()
在setup.py 中,将此作为参数添加到setup 函数调用中:
entry_points={
'console_scripts': [
'funniest-joke = funniest.command_line:main'
],
},
问题是我无法让其中任何一个工作。软件包安装得很好,但我的路径上没有可执行文件,它甚至似乎没有在任何/bin/ 目录中放置任何东西。我的路径上应该有一个funniest-joke,但没有。
有关信息:
我使用的是安装了 miniconda 的 Python,它位于 ~/miniconda3/,所以我用来安装软件包的 pip 位于 ~/miniconda3/bin,而 Python 也是 ~/miniconda3/bin 的那个。
包(funniest)安装到/miniconda3/lib/python3.6/site-packages/funniest。
我的路径包含以下目录。
/bin/
/usr/local/bin/python
/Users/USERNAME/miniconda3/bin
/usr/local/bin
/usr/bin
有人可以帮助我吗?
【问题讨论】:
-
所以你基本上是从之前激活的 conda 环境中运行 Python 脚本。运行您希望能够安装的 python 脚本,例如 wget。通常你会做 pip install wget 在这里,如果我理解得很好,你想从 python 以编程方式来做,对吧?
-
@Pitto 不,如果我理解正确的话,它实际上不在任何环境中。我刚刚安装了 Python 的 miniconda 发行版,而不是使用内置 (macOS) Python 或 Homebrew Python。我想 conda 充当包管理器。至于第二点:我看不清楚。我的意思是我想做类似于
pip install wget,然后能够从命令行运行wget(在任何目录中)。 -
@Pitto 我在第一段中添加了一些说明。清楚了吗?
-
您提到了脚本的两种方法(entry_points 或 bin 目录中的脚本),但您没有说明您要遵循哪种方法。对于前者,如何定义
setup.py至关重要。如果您想使用该方法,请包含您当前 setup.py 的一些详细信息。啊,不过在此之前,请明确您要使用哪条路线! -
@Bonlenfum 哦,对不起。我做了与教程中完全相同的事情。我会在帖子中添加它。
标签: python command-line packages conda miniconda