2

我编写了一个 python27 模块并使用python setup.py install.

该模块的一部分有一个脚本,我在安装它之前将它放在模块内的 bin 文件夹中。我认为该模块已正确安装并且可以正常工作(已添加到站点包和脚本中)。我已经构建了一个简单的脚本“test.py”,它只运行模块中的函数和脚本。这些功能工作正常(预期的输出打印到控制台),但脚本没有。

我在 test.py 中尝试过from [module_name] import [script_name],但没有成功。

如何从命令行在模块的 bin 中运行脚本?

4

2 回答 2

1

你是用distutils还是setuptools

我现在测试了,如果是distutils,有就够了

scripts=['bin/script_name']

在您的setup()通话中

相反,如果您使用的是 setuptools,则可以避免在 bin/ 中完全包含脚本,并通过添加来定义您的入口点

entry_points={'console_scripts': ['script_name = module_name:main']}

在您的setup()通话中(假设您在main里面有一个函数module_name

你确定 bin/script_name 被标记为可执行文件吗?

尝试运行脚本时遇到的确切错误是什么?你的 setup.py 的内容是什么?

于 2013-04-23T15:47:59.627 回答
0

请检查您安装的模块是否使用条件来检查全局变量的状态__name__。我是说:

if __name__ == "__main__":

全局变量__name__更改为“ __main__”字符串以防万一,然后您从命令行手动启动脚本(例如 python sample.py)。如果您使用此条件,并将所有代码放在此条件下,那么当您尝试从另一个脚本导入已安装的模块时,它将起作用。例如(模块中的代码将不会运行,当您导入它时):

测试导入.py:

import sample
...another code here...

示例.py:

if __name__ == "__main__":
    print "You will never see this message, except of case, when you start this module manually from command line"
于 2013-04-24T09:42:02.507 回答