❶ 什麼是pyc文件
pyc文件就是 Python 程序編譯後得到的位元組碼文件 (py->pyc).
pyc文件一般由3個部分組成:
最開始4個位元組是一個Maigc int, 標識此pyc的版本信息, 不同的版本的 Magic 都在 Python/import.c 內定義
接下來四個位元組還是個int,是pyc產生的時間(1970.01.01到產生pyc時候的秒數)
接下來是個序列化了的 PyCodeObject(此結構在 Include/code.h 內定義),序列化方法在 Python/marshal.c 內定義
❷ 怎樣運行.pyc文件
pyc是一種
二進制文件
,是由py文件經過編譯後,生成的文件,是一種byte
code,py文件變成pyc文件後,載入的速度有所提高,而且pyc是一種跨平台的
位元組碼
,是由python的虛擬機來執行的,這個是類似於JAVA或者.NET的專
虛擬機
的概念.pyc的內容,是跟python的版本屬相關的,不同版本編譯後的pyc文件是不同的,2.5編譯的pyc文件,2.4版本的python是無法執行的。
❸ 如何編譯生成PYC文件
Python語言編程中如何編譯生成PYC文件?(版本Python V 3.4.1)
(1) compile() 函數
compile() 函數有兩個, 一個是內建函數,另一個是模塊py_compile中的.前者生成一個Compile對象,它只能在代碼中被調用(exec(comp)),不能生成pyc文件。後者必須生成pyc文
件,但不能在交互界面運行它(run 和 exec都不行)。
(2) 生成生成pyc文件
compile(file, cfile=None, dfile=None, doraise=False, optimize=-1)
例子:
compile("test.py")
compile("test.py", "test.pyc")
第一種方法輸出文件在子目錄__pycache__中,而且文件名是test.python-34.pyc,有兩個點,不好!所以一定要用第二種格式輸出文件在當前當前目錄。其它選項都預設就行, -1 表示優化,所以pyo文件也不用去做了。
(3) pyc文件的運行
不能在python的交互界嘩蠢面中運行(run 和氏蘆沖 exec都不行)。只能夠在DOS屏幕上運行, 格式為:
python test.pyc [argv]
在程序中調用可以用:
os.system ("python test.pyc ")
(4)內建函數compile()的語法
compile(source, filename, mode[, flags[, dont_inherit]]) -> code
object。
生成一個code對象。
例子:
yuju = "print('hello')"
hc = compile(yuju, "yuju.err", "single")
exec(hc)
輸出:hello
type(hc) --> code
使用時至少要提供3個參數,source是源代碼,它可以是語句、表達式或代碼文件。filename要求一個文件名儲存出錯信息,mode是編譯模式,只殲殲能使用如下3種:exec, eval, single。
❹ python怎麼打開pyc文件
關於PyCodeObject和pyc文件:在硬碟上看到的pyc文件,其實PyCodeObject才是Python編譯器真正編譯成的結果。當python程序運行時,編譯的結果是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。當python程序第二次運行時,首先程序會在硬碟中尋找pyc文件,如果找到,則直接載入,否則就重復上面的過程。所以,我們可以說pyc文件其實是PyCodeObject的一種持久化保存方式。
你指的是編輯pyc還是導入pyc?
pyc是很難直接編輯的,最好是修改原來的py文件,再生產pyc。
導入pyc:假設你的源代碼文件是model.py,經過Python37解釋器運行後會自動生成modle.cpython-37.pyc。如果要在main.py中導入modle.cpython-37.pyc,需要把文件名中的cpython-37去掉,變成model.pyc,再放到main.py所在的文件夾里,在main.py中添加「import model」,即可導入model。
❺ python文件和解釋器版本不同如何解決
手工將2.X版本按2到3的幫助文檔,一點點自己改成python3的語法 。
因為python2與python3是差異比較大的兩個語言。 有些庫差異,有些函數也變了。
其實即使是python2的不同大版本,它的pyc也是不兼容的。
再說python2也不難獲得。 你找個python2編譯器就完了。實在不成用jython也可以。 再不成用pypy。
現在用python3的人還是少數,都幾年了,python3還是少數。沒有必要總拿python3來做什麼東西。因為python3未必就是方向。
❻ 'mole' object has no attribute 'ManyToOneRel'
因為本地的gyp mole引起
1) $ python -c 'import gyp; print gyp.__file__'
/usr/lib/python2.6/site-packages/gyp/__init__.pyc
移動到某個文件夾
2) $ mv /usr/lib/python2.6/site-packages/gyp /usr/lib/python2.6/site-packages/gyp_backup
確保python不能橘者找到它
3) $ python -c 'import gyp; print gyp.__file__'
Traceback (most recent call last):
File "<string>", line 1, in <mole>
ImportError: No mole named gyp
再亮伍仿次執行
4) $ sudo sh npm-install.sh
能正常啟動敬纖game-server
❼ PYC文件怎麼打開
這個pyc是 python2.x版本編譯的,python的2.x版本與3.x版本差異較大,換個低版本的就可以打開了。
❽ PYC是什麼意思
pyc是一種二進制文件,是由py文件經過編譯後,生成的文件,是一種byte code,py文件變成pyc文件後,載入的速度有所提高,而且pyc是一種跨平台的位元組碼,是由python的虛擬機來執行的,這個是類似於JAVA或者.NET的虛擬機的概念。pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc文件是不同的,2.5編譯的pyc文件,2.4版本的python是無法執行的。
不知你的PYC是在何種情境下看到的PYC····
❾ python寫的程序怎樣加密
對Python加密時可能會有兩種形式,一種是對Python轉成的exe進行保護,另一種是直接對.py或者.pyc文件進行保護,下面將列舉兩種形式的保護流程。
1、對python轉exe加殼
下載最新版VirboxProtector加殼工具,使用加殼工具直接對demo.exe進行加殼操作
2、對.py/.pyc加密
第一步,使用加殼工具對python安裝目錄下的python.exe進行加殼,將python.exe拖入到加殼工具VirboxProtector中,配置後直接點擊加殼。
第二步,對.py/.pyc進行加密,使用DSProtector對.py/.pyc進行保護。
安全技術:
l虛擬機外殼:精銳5的外殼保護工具,創新性的引入了預分析和自動優化引擎,有效的解決了虛擬化保護代碼時的安全性和性能平衡問題。
l碎片代碼執行:利用自身成熟的外殼中的代碼提取技術,抽取大量、大段代碼,加密混淆後在安全環境中執行,最大程度上減少加密鎖底層技術和功能的依賴,同時大量大段地移植又保證了更高的安全性。
lVirbox加密編譯引擎:集編譯、混淆等安全功能於一身,由於在編譯階段介入,可優化空間是普遍虛擬化技術無法比擬的,對代碼、變數的混淆程度也有了根本的提升。
l反黑引擎:內置R0級核心態反黑引擎,基於黑客行為特徵 的(反黑資料庫)反制手段。精準打擊調試、注入、內存修改等黑客行為,由被動挨打到主動防護。
加密效果:
加密之前
以pyinstall 的打包方式為例,使用pyinstxtractor.py文件對log_322.exe進行反編譯,執行後會生成log_322.exe_extracted文件夾,文件夾內會生成pyc文件。
成功之後會在同目錄下生成一個文件夾
❿ python 求一個python pyc文件反編譯到py文件的工具,謝啦!!!
pyc大約在python2剛出的時候有。後來就很少找得到了。有一次,不小心把.py刪除了,通版過pyc還把代碼還原了。權
你搜索uncompyle2, decompyle2, DePython, unpyc, uncompyle, pycdc 等等。 我似乎以前就是用的unpyc
聽說python2.7而言, uncompyler是最好用的工具。