我想使我的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
的问题是什么?
答案 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',
]
)