如何打包 Python 模块
How to package a Python module
我是 Python 的新手,我一直在做 LPTHW 中的练习:
http://learnpythonthehardway.org/book/ex46.html
作者对打包的解释很含糊,于是研究了一下,最后还是有一些疑问。
首先,如果您有一个导入另一个模块的模块会怎样?您是将导入的模块放入包含第一个模块的目录的子目录中,还是放入根目录中的另一个单独目录中?
其次,一旦安装了整个软件包,您如何运行bin 文件夹中的任何脚本?
Firstly, what happens if you have a module that imports another
module? Do you put the module that is imported into a subdirectory of
the directory containing the first module, or in another separate
directory in the root?
模块只是一个包含 Python 代码的文件 - 您不需要将其放在单独的目录中。最简单的选择是将文件放在包含将执行导入的模块的同一目录中。
如果你把它放在其他目录 而那个目录不是包 你将根本无法导入它(除非你手动弄乱 PYTHONPATH
你不应该这样做)。
Secondly, once you have installed the entire package how do you run
any scripts that are in the bin folder?
执行此操作的方法是使用 console_scripts
在 setup.py
文件中为您的应用程序指定脚本。这样,当你的包被安装时,你的脚本将被正确构建并放置在目标平台上的正确目录中,这样你就可以直接执行它们(无需知道它们在文件系统中的位置)。
例如,您可以浏览 setup.py
file for the django project.
如果您要安装包,则无需知道实际脚本所在的位置 - 只需安装包并直接从提示符处执行命令即可。
我是 Python 的新手,我一直在做 LPTHW 中的练习:
http://learnpythonthehardway.org/book/ex46.html
作者对打包的解释很含糊,于是研究了一下,最后还是有一些疑问。
首先,如果您有一个导入另一个模块的模块会怎样?您是将导入的模块放入包含第一个模块的目录的子目录中,还是放入根目录中的另一个单独目录中?
其次,一旦安装了整个软件包,您如何运行bin 文件夹中的任何脚本?
Firstly, what happens if you have a module that imports another module? Do you put the module that is imported into a subdirectory of the directory containing the first module, or in another separate directory in the root?
模块只是一个包含 Python 代码的文件 - 您不需要将其放在单独的目录中。最简单的选择是将文件放在包含将执行导入的模块的同一目录中。
如果你把它放在其他目录 而那个目录不是包 你将根本无法导入它(除非你手动弄乱 PYTHONPATH
你不应该这样做)。
Secondly, once you have installed the entire package how do you run any scripts that are in the bin folder?
执行此操作的方法是使用 console_scripts
在 setup.py
文件中为您的应用程序指定脚本。这样,当你的包被安装时,你的脚本将被正确构建并放置在目标平台上的正确目录中,这样你就可以直接执行它们(无需知道它们在文件系统中的位置)。
例如,您可以浏览 setup.py
file for the django project.
如果您要安装包,则无需知道实际脚本所在的位置 - 只需安装包并直接从提示符处执行命令即可。