我有一个简单的蟒蛇的应用程序,我的目录结构如下:

  • 项目/
    • main.py
    • config.py
    • 插件/
      • plugin1
      • plugin2
      • ...

Config.py 仅载荷配置文件,它不含有任何构造信息的本身。

我现在要分发的这个程序,我想我会使用设置工具做到这一点。文件用户预期使用main.py,因此,一个明确的进入/usr/bin和其他文件的进入/usr/share/项目。

但有一个问题:我会以某种方式需要告诉main.py 看看config.py 在分享目录。但是我真的不能确定确切的分享目录是因为,要设置工具,对吗?

什么是最佳做法时分发蟒蛇的基础的应用程序?

有帮助吗?

解决方案

设置工具 安装您的包裹在一位置,这可从python即你可以将它导:

import project

问题提出的,当你做的相对进口而不是绝对进口。如果你的 main.py 进口 config.py 它的工作因为他们生活在同一个目录。当你移动你的 main.py 另一位像 /usr/bin 或者另一个位置存在 路径 环境变量,python试图进口 config.pysys.path 而不是从你的包dir。该方案是使用绝对进口:

from project import config

现在 main.py 是"动".

另一个解决方案,这是我喜欢,是使用自动剧本创作提供的 设置工具.

而不是有你的代码中

if __name__ == "__main__":
    # here all your beautiful code

发言,把你的代码中的一个功能(主要可能是一个很好的名称):

def main():
    # put your code here

if __name__ == "__main__":    # not needed, just in case...
    main()

现在你的修改 setup.py:

setup(
    # ...
    entry_points = {
        "console_scripts": [
            # modify script_name with the name you want use from shell
            # $ script_name [params]
            "script_name = project.main:main",
        ],
    }
)

这就是全部。之后安装 设置工具 将创建一个包装脚本,这是可调用,从壳体和电话你的主要功能。现在 main.py 可以住在你的项目目录,你不再需要的移动它 bin/ 目录。注意, 设置工具 会自动把这个脚本 bin/ 目录相对于安装的前缀。

es.

python setup.py install --prefix ~/.local

安装项目包

~/.local/lib/python<version>/site-packages/<package_name>

和你的脚本

~/.local/bin/<script_name>

所以要确定 ~/.local/bin 存在于你的 路径 env.

更多信息: http://peak.telecommunity.com/DevCenter/setuptools#automatic-script-creation

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top