English 中文(简体)
如果没有匹配. Pyc 文件, Python 如何运行模块代码?
原标题:How does Python run module code when there s no matching .pyc file?

如果我从窗口 7 中的 python 命令行导入一个模块1.py 。 我看到相应的模块1.pyc 文件出现在 Python32/ < strong> pycache / 文件夹中。 我的理解是, 由 Python 口译员执行的就是这个字节代码, 但是我可以删除模块1. pyc 文件, 我的模块函数( module1. func1 (...) 等) 仍然可以从命令行调用。 当函数被调用时, 正在运行的是什么 。 但是. pyc 文件不存在? 当编译了字节代码时, 它是否也复制到 Python shell 的运行时间内存?

问题回答

调用解译器时, 字节码在内存中。. pyc 文件是下次导入代码时的缓存, 这样python 将不必分析代码, 如果它没有更改的话 。

TL;DR

Python 总是运行编译的字节代码, 要么在运行时编译, 要么在磁盘上读取.pyc 文件 。

Slightly Longer Answer

Python调用py_compile >>compileall ,如果在.pyc 文件中找到有效预编译的字节代码,Python使用它。即使没有原始源文件,它也可以这样做。

如果没有.pyc 文件,或者如果源文件比预先编译的字节代码更新,那么Python 使用源文件并重新编译。这就是你正在观察的行为。

Official Answer

答复见PEP 3147:PYC存储目录





相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...

热门标签