带有和不带有setuptools构建的模块导入

时间:2018-12-29 21:46:40

标签: python python-3.x setuptools

我想使我的python应用程序可分发,但是当我从项目文件夹的命令行运行它时,一切正常。包装后,模块导入有问题。

所有模块都存在于软件包tlen中。在我的应用程序中,我使用例如。 from Sender import Sender,其中发件人是tlen/Sender.py模块。

运行tlen/main.py时,一切正常。

当我尝试通过sudo python setup.py install打包并运行命令tlen时存在问题。然后我收到:

File "/usr/lib/python3.7/site-packages/tlen-1.0-py3.7.egg/tlen/main.py", line 3, in <module>ModuleNotFoundError: Nomodule named 'Sender'

整个项目: https://github.com/tloszabno/tl_en

我的setup.py文件:

setuptools.setup(
name='tlen',
version='1.0',
author='Tomasz Łoś',
author_email='tloszabno@gmail.com',
description='A tool to learn foreign language',
packages=["tlen"],
entry_points={
    'console_scripts': [
        'tlen = tlen.main:main'
    ]
},
classifiers=[
    'Programming Language :: Python :: 3',
    'License :: OSI Approved :: MIT License',
    'Operating System :: OS Independent',
],
)

import的问题是什么?

1 个答案:

答案 0 :(得分:0)

我已经解决了!

只需将app.py文件添加到主目录(tlen的..),其内容为:

#!/usr/bin/env python
from tlen import main as app
def main():
    app.main()
if __name__ == '__main__':
    main()

然后setup.py:

import setuptools
setuptools.setup(
name='tlen',
version='1.0',
author='Tomasz Łoś',
author_email='tloszabno@gmail.com',
description='A tool to learn foreign language',
packages=["tlen"],
entry_points={
    'console_scripts': [
        'tlen = app:main'
    ]
},
classifiers=[
    'Programming Language :: Python :: 3',
    'License :: OSI Approved :: MIT License',
    'Operating System :: OS Independent',
],
scripts=[
        'app.py',
       ]