我想使用 Python 编译(.pyc或__pycache__)运行 Pythonic 项目。为了在Python2 中做到这一点,我没有任何问题。
这是Python2项目中的一个简化示例:
项目树:
test2
├── main.py
└── subfolder
├── __init__.py
└── sub.py
编译:
python -m compileall test2
编译后的项目树:
test2
├── main.py
├── main.pyc
└── subfolder
├── __init__.py
├── __init__.pyc
├── sub.py
└── sub.pyc
如您所见,有几个是.pyc手动生成的。现在我可以使用main.pycasfine运行这个项目,它与以下内容有关sub.py:
python main.pyc
出去:
Hi
Bye
main.py 内容:
from subfolder import sub
print('Bye')
子.py内容:
print('Hi')
现在我想在Python3项目中重试这种行为。
这是一个简化的asyncio(在Python3 中可用)项目:
项目树:
test3
├── main.py
└── subfolder
├── __init__.py
└── sub.py
编译:
python3 -m compileall test3
编译后的项目树:
test3
├── main.py
├── __pycache__
│ └── main.cpython-36.pyc
└── subfolder
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-36.pyc
│ └── sub.cpython-36.pyc
└── sub.py
如您所见,__pycache__文件夹是手动生成的。但是我不能使用main.cpython-36.pyc它来运行这个项目,它与subfolder以下有关系:
cd test3/__pycache__
python3 main.cpython-36.pyc
出(我预计会产生Hi Bye消息):
Traceback (most recent call last):
File "test3/main.py", line 2, in <module>
ModuleNotFoundError: No module named 'subfolder'
main.py 内容:
import asyncio
from subfolder import sub
async def myCoroutine():
print("Bye")
def main():
loop = asyncio.get_event_loop()
loop.run_until_complete(myCoroutine())
loop.close()
main()
子.py内容:
print('Hi')
题:
如何使用文件夹运行此项目(在Python3项目之上)__pycache__?
或者
如何使用python编译运行具有子文件夹之间关系的Python3项目?
[注意]:
由于方法的原因,我无法在上述项目中使用python compileall(Python2 compile)。Python3asyncio
我的 Python(s) 版本是Python2.7和Python3.6
相关分类