如何使用 __pycache__ 文件夹运行 Python 项目?

我想使用 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


蝴蝶不菲
浏览 254回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python