- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想使用 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.pyc
运行这个项目as fine,跟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')
如何使用 __pycache__
运行此项目(在 Python3 项目之上)文件夹?
或者
如何使用 python 编译运行具有子文件夹之间关系的 Python3 项目?
[注意]:
我无法使用 python compileall
(Python2编译)在上面Python3
项目由于asyncio
方法。
我的 Python 版本是 Python2.7 和 Python3.6
最佳答案
您可以使用以下方法在文件夹中强制执行与 Python2 中相同的 pyc 文件布局:
python3 -m compileall -b test3
选项-b
触发 pyc
文件的输出到它们的旧位置(即与 Python2 中的相同)。
之后您可以通过以下方式再次使用已编译的缓存:
python3 main.pyc
自 PEP-3147 以来模块的加载方式,不可能按照您打算的方式使用 __pycache__
文件夹中的 pyc 文件:如果没有 *.py
文件,则 __pycache__ 的内容
永远不会被查找。这是工作流程中最重要的部分:
import foo
|
|
-- > [foo.py exists?] --- NO ----> [foo.pyc exists?] -- NO --> [ImportError]
| |
| YES
YES |--> [load foo.pyc]
|
|-> [look up in __pycache__]
这意味着,只有当可以找到相应的 *.py
文件时,才会查找来自 __pycache__
的文件。
显然,以这种方式使用 Python 版本 3.X 构建 python 脚本并尝试使用另一个 Python 版本 3.Y 运行生成的 pyc 文件是行不通的:不同的 Python 版本需要不同的 pyc 文件,这就是整点落后PEP-3147 .
关于python - 如何使用 __pycache__ 文件夹运行 Python 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53918318/
我想知道是否保留 __pycache__文件夹和 .pyc内置容器中的文件是好还是坏的做法。 一方面,您希望最小化容器的大小,但另一方面,您也不希望减慢容器的执行速度。 考虑到 python 解释器是
我有一个文件夹/foo。此文件夹作为 package_data 包含在我的 Python 包的 setup.py 中。当某人 pip install 是我的包时,他们可以将 /foo 下载到他们的计算
这个问题已经有答案了: Is it possible to decompile a compiled .pyc file into a .py file? (9 个回答) 已关闭 5 年前。 我犯了一
Pytest 警告在第一次和后续运行之间是不同的。 janbet@ub/home/janbet $ cat test_x.py def test_1(): a = '\d' janbet@ub
我想问一下是否有另一种方法可以在服务器中禁用 __pycache__ 的创建。 我的问题是即使我已经将环境变量设置为 PYTHONDONTWRITEBYTECODE=1 它也会继续生成 我想禁用 __
Django 1.6 Ubuntu 12.04 Python 3.2.3 意外删除了 Django 应用的 __pycache__ 文件夹及其 __init__.py 文件,导致 Django 崩溃。
我想使用 Python 编译(.pyc 或 __pycache__)运行 Pythonic 项目。为了在 Python2 中做到这一点,我没有任何问题。 这是 Python2 项目中的一个简化示例:
从 python3 项目中清除所有 __pycache__ 文件夹和 .pyc/.pyo 文件的最佳方法是什么。我看到多个用户建议使用 Debian 捆绑的 pyclean 脚本,但这不会删除文件夹。
我使用的是 Windows 7,并且安装了 Python 2.7.5 和 3.3.2。我的 path 环境变量设置为 C:\Program Files\Intel\WiFi\bin\;C:\Progr
从 python wheel 分发包中排除文件的正确方法是什么? 编辑 MANIFEST.in 没有任何效果,我找不到有关此详细信息的信息。 最佳答案 你为什么要这样做?当一个项目在目标机器上第一次运
在 Python 中,运行程序后,会在名为 __pycache__ 的文件夹中保存缓存。有关这些文件夹功能的进一步说明,请参阅 this question . Ruby 有类似的东西吗?如果不是,为什
我在本地 win7 机器上构建了一个 Web 应用程序。我用 pycharm 做到了,并使用 git 作为版本控制。我是一个完全的 git 新手。 我将存储库放在 github 上,以便我可以将 we
这是我的 .gitignore : *__pycache__* *.pyc db.sqlite3 *.DS_Store media/ res/ 我可以在我的 上看到原子 那个__pycache__目录
CPython 3.x 和 PyPy 遵循 PEP 3147并将 pyc 文件存储在 __pycache__ 目录中,并附加一个 Python 版本后缀。 我如何强制 CPython 2.7 将其 p
问题:我在 Windows 7 上安装了 conda 4.2.13,并且我想在每次导入某些 python (3) 模块时禁止创建 __pycache__ 文件夹由我创建。为此,我在互联网上的不同帖子中
我的 Jenkins CI 作业从 Git checkout 一个 Python 项目,构建应用程序,运行一些测试,然后将应用程序部署到服务器。 通常,我会设置我的 CI 作业以在每次运行之间删除工作
我想避免让 Python 字节码 *.pyc 文件弄乱我的工作目录。 Python 3.2+ uses a subdirectory为此调用了 __pycache__。 由于我从事的许多项目都是 Py
我是一名优秀的程序员,十分优秀!