Python3和Setuptools:安装EGG文件后运行脚本出现问题(模块未找到错误)

2024-05-16 02:23:35 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用Python3/setuptools为我的pkg构建了一个EGG文件之后,我在尝试运行脚本时遇到了一些问题。如果在setup.py中使用zip\u safe=False,我可以正常运行脚本。但我得到了一个modulenofounderror。我做错了什么?我不想使用zip\u safe=False选项

我的项目结构如下:

.
|-- python_pkgs
|   |-- __init__.py
|   |-- acap
|   |   |-- __init__.py
|   |   |-- acap.py
|   |   |-- cfg
|   |   |-- pch_acap.pl
|   |   |-- spf.py
|   |   `-- tvpv.py
|   |-- parsers
|   |   |-- STIL1999ModelBuilderSemantics.py
|   |   |-- STIL1999Parser.py
|   |   |-- __init__.py
|   |   |-- grammars
|   |   `-- test
|   `-- utils
|       |-- __init__.py
|       |-- misc.py
|       |-- nbq.py
|       |-- splitter.py
|       `-- util.py
|-- run_acap.py
`-- setup.py

run_acap.py的内容:

    #!/nfs/sc/disks/mpe_tvpv_032/sw_tools/anaconda3/bin/python3.7 -B
    import sys
    print(sys.path)

    from python_pkgs.acap.acap import main

    if __name__ == "__main__":
       main()

setup.py文件的内容:

from setuptools import setup, find_namespace_packages

setup(
    name='python_pkgs',
    version='0.1',
    packages=find_namespace_packages(include=['python_pkgs.*'],
                                     exclude=['python_pkgs.parsers',
                                              'python_pkgs.parsers.*']),
    scripts=['run_acap.py']
)

要安装,我说:python setup.py install--prefixa path

安装目录内容如下所示:

$ tree
.
|-- bin
|   `-- run_acap.py
`-- lib
    `-- python3.7
        `-- site-packages
            |-- easy-install.pth
            |-- python_pkgs-0.1-py3.7.egg
            `-- site.py

我注意到bin/run_acap.py的内容有些不同:

#!/nfs/sc/disks/mpe_tvpv_032/sw_tools/anaconda3/bin/python -B
# EASY-INSTALL-SCRIPT: 'python-pkgs==0.1','run_acap.py'
__requires__ = 'python-pkgs==0.1'
__import__('pkg_resources').run_script('python-pkgs==0.1', 'run_acap.py')

现在运行这个脚本,我说:

setenv PYTHONPATH <a path>/lib/python3.7/site-packages
<a path>/bin/run_acap.py --help



 $ /nfs/sc/disks/mpe_tvpv_032/pgupta6/releases/acap/ww49.2/bin/run_acap.py --help
['/nfs/sc/disks/mpe_tvpv_032/pgupta6/releases/acap/ww49.2/bin', '/nfs/sc/disks/mpe_tvpv_032/pgupta6/releases/acap/ww49.2/lib/python3.7/site-packages', '/nfs/sc/disks/mpe_tvpv_032/pgupta6/releases/acap/ww49.2/lib/python3.7/site-packages/python_pkgs-0.1-py3.7.egg', '/nfs/sc/disks/mpe_tvpv_032/sw_tools/anaconda3/lib/python37.zip', '/nfs/sc/disks/mpe_tvpv_032/sw_tools/anaconda3/lib/python3.7', '/nfs/sc/disks/mpe_tvpv_032/sw_tools/anaconda3/lib/python3.7/lib-dynload', '/nfs/sc/disks/mpe_tvpv_032/sw_tools/anaconda3/lib/python3.7/site-packages']
    Traceback (most recent call last):
      File "/nfs/sc/disks/mpe_tvpv_032/pgupta6/releases/acap/ww49.2/bin/run_acap.py", line 4, in <module>
        __import__('pkg_resources').run_script('python-pkgs==0.1', 'run_acap.py')
      File "/nfs/sc/disks/mpe_tvpv_032/sw_tools/anaconda3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 666, in run_script
        self.require(requires)[0].run_script(script_name, ns)
      File "/nfs/sc/disks/mpe_tvpv_032/sw_tools/anaconda3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 1469, in run_script
        exec(script_code, namespace, namespace)
      File "/nfs/sc/disks/mpe_tvpv_032/pgupta6/releases/acap/ww49.2/lib/python3.7/site-packages/python_pkgs-0.1-py3.7.egg/EGG-INFO/scripts/run_acap.py", line 11, in <module>
    ModuleNotFoundError: No module named 'python_pkgs'

但是如果我打开一个python解释器,只需键入import python\u pkgs导入就可以了。我不确定我在setup.py文件(或其他地方)中做错了什么。如何修复此错误?谢谢


Tags: runpylibpackagessiteswtoolssc