Python ModuleNotFoundError与setup.py一起使用编译的pyc模块

Python ModuleNotFoundError与setup.py一起使用编译的pyc模块,python,python-3.x,python-import,setup.py,pyc,Python,Python 3.x,Python Import,Setup.py,Pyc,我通常可以导入编译后的.pyc模块以及.py,但是当尝试使用setup.py打包简单项目时,我会得到编译后的.pyc模块的ModuleNotFoundError异常。因为只有在使用setup.py时才会发生这种情况,否则工作正常,我不知道是否有什么东西需要setup.py才能工作 项目结构目前如下所示: proj ├── FAILING.pyc ├── __init__.py ├── aux/ │   ├── __init__.py │   └── aux.c └── main.py 以及se

我通常可以导入编译后的
.pyc
模块以及
.py
,但是当尝试使用
setup.py
打包简单项目时,我会得到编译后的
.pyc
模块的
ModuleNotFoundError
异常。因为只有在使用
setup.py
时才会发生这种情况,否则工作正常,我不知道是否有什么东西需要
setup.py
才能工作

项目结构目前如下所示:

proj
├── FAILING.pyc
├── __init__.py
├── aux/
│   ├── __init__.py
│   └── aux.c
└── main.py
以及
setup.py

from setuptools import setup, Extension, find_packages

DISTNAME = 'proj'

INSTALL_REQUIRES = [
        'cython>=0.29.13',
        'numpy>=1.16.4'
]
PYTHON_REQUIRES = '>=3.6'

ENTRY_POINTS = {
    'console_scripts': ['proj = proj.main:main']
}

def setup_extensions(metadata):
    ext_modules = [Extension('proj.aux.aux', sources=['proj/aux/aux.c'])]
    metadata['ext_modules'] = ext_modules

def setup_package():
    metadata = dict(
        name=DISTNAME,
        version='0.1',
        package_dir={'': '.'},
        packages=find_packages(),
        entry_points=ENTRY_POINTS,
        python_requires=PYTHON_REQUIRES,
        install_requires=INSTALL_REQUIRES,
        zip_safe=False,
    )
    setup_extensions(metadata)
    setup(**metadata)


if __name__ == '__main__':
    setup_package()
#!/usr/bin/env python3

import proj.aux.aux as aux
import proj.FAILING

def main():
    print('Hello World')
main.py

from setuptools import setup, Extension, find_packages

DISTNAME = 'proj'

INSTALL_REQUIRES = [
        'cython>=0.29.13',
        'numpy>=1.16.4'
]
PYTHON_REQUIRES = '>=3.6'

ENTRY_POINTS = {
    'console_scripts': ['proj = proj.main:main']
}

def setup_extensions(metadata):
    ext_modules = [Extension('proj.aux.aux', sources=['proj/aux/aux.c'])]
    metadata['ext_modules'] = ext_modules

def setup_package():
    metadata = dict(
        name=DISTNAME,
        version='0.1',
        package_dir={'': '.'},
        packages=find_packages(),
        entry_points=ENTRY_POINTS,
        python_requires=PYTHON_REQUIRES,
        install_requires=INSTALL_REQUIRES,
        zip_safe=False,
    )
    setup_extensions(metadata)
    setup(**metadata)


if __name__ == '__main__':
    setup_package()
#!/usr/bin/env python3

import proj.aux.aux as aux
import proj.FAILING

def main():
    print('Hello World')
如果我只是尝试在repl上导入
FAILING.pyc
,一切正常:

>>> import FAILING
>>>
但是如果我首先运行
python3 setup.py intall
,然后调用
proj
,我会得到以下错误:

$ proj
Traceback (most recent call last):
  File "/path/to/bin/proj", line 11, in <module>
    load_entry_point('proj==0.1', 'console_scripts', 'proj')()
  File "/path/to/lib/python3.8/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/path/to/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
    return ep.load()
  File "/path/to/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2443, in load
    return self.resolve()
  File "/path/to/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2449, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/path/to/lib/python3.8/site-packages/proj-0.1-py3.8-macosx-10.14-x86_64.egg/proj/main.py", line 4, in <module>
    import proj.FAILING
ModuleNotFoundError: No module named 'proj.FAILING'
$proj
回溯(最近一次呼叫最后一次):
文件“/path/to/bin/proj”,第11行,在
加载入口点('proj==0.1','console\u scripts','proj')()
文件“/path/to/lib/python3.8/site packages/pkg_resources/_init__.py”,第489行,在加载入口点
返回获取分布(dist)。加载入口点(组、名称)
文件“/path/to/lib/python3.8/site packages/pkg_resources/_init__.py”,第2852行,在加载入口点
返回ep.load()
文件“/path/to/lib/python3.8/site packages/pkg_resources/_init__.py”,第2443行,已加载
返回self.resolve()
文件“/path/to/lib/python3.8/site-packages/pkg_-resources/_-init__.py”,第2449行,解析中
module=\uuuu导入(self.module\u name,fromlist=[''\uuuu name\uuuuuuu'],级别=0)
文件“/path/to/lib/python3.8/site packages/proj-0.1-py3.8-macosx-10.14-x86_64.egg/proj/main.py”,第4行,在
导入项目失败
ModuleNotFoundError:没有名为“项目失败”的模块
我也在VirtualEnvironment中运行它,尽管我猜这与错误无关


我做错了什么,或者我需要做什么改变才能使这项工作正常进行?

下面是一个小演示,它构建了一个包含.pyc文件的源发行版和控制盘

请注意,我已经从您的示例中删除了大部分内容,因为cython的内容与您的问题无关

set-euxo-pipefail
rm-rf dist testpkg setup.py

cat>setup.py
python setup.py安装
非常旧,可能不是您想要的(它安装为
egg
)--您可能需要
pip安装。
并确保将
.pyc
作为数据文件包含(因为默认情况下通常不包括它们)
pip安装。
导致与上述相同的
modulenofounderror
。。。我确实读了一些关于数据文件和
setup.py
的内容,但没有与
.pyc
建立连接。我会调查的。