❶ Pycharm(Django)運行後報錯,EOFError: marshal data too short
原因
*.pyc文件異常導致。*.pyc 文件是腳本的編譯位元組代碼,當Python腳本運行啟動時,它會動態創建,由於某種原因它不再與原始腳本匹配,所以報錯。
解決方法
找到報錯的__pycache__文件刪除即可正常啟動。通過在config.py文件中打斷點,定位具體報錯的mole,將對應文件中的__pycache__刪除。
❷ 調用自定義模塊出現MoleNotFoundError的問題
Python會在以下路徑中搜索它想要尋找的模塊:
1,程序所在的文件夾
2,標准庫的安裝路徑
3,操作系統環境變數PYTHONPATH所包含的路徑
產生問題的原因可能是: IDE(我使用的是Pycharm)沒有將當前目錄添加到工作目錄中,導致了在搜索的目錄中找不到要調用的模塊。
解決方法1:在調用自定義模塊前先將程序所在的目錄添加到工作目錄中
例如 這里的preprocess.py是我們自定義的模塊 ,已經將其放在同一目錄下
解決方法2:在Pycharm中創建NewProject,將調用程序與被調用程序放在同一個Project中。
此時Pycharm會自動生成.idea和__pycache__兩個文件夾,模塊的調用應該和這個有關,然後在程序中直接調用自定義的模塊就可以了。
紅色劃線部分是調用的python解析器的位置。可能在用pycharm調用的時候這些模塊都是能正常使用的。但是,為什麼到了vscode這兒就出問題了呢?
首先,讓我們來看看現在有哪些模塊,在命令行終端輸入conda list。
可以看見torch模塊確實已經安裝了,不過請注意後面還有個pypi。pypi是指這個模塊是通過pip安裝的,而不是通過conda安裝。所以模塊無法調用的原因就在這兒。
解決方法比較簡單粗暴,在選擇python解析器的時候選擇conda base版本的就OK了。在這個解析器下,即使是pip安裝的模塊也可以照常使用。
1、因為默認的路徑不在根目錄了,而以 當前運行的程序文件夾為根目錄
2、如果在當前文件目錄底下可以找到導入的包,那麼可以直接使用from … import …
3、如果在當前文件目錄底下找不到導入的包,則需要向sys.path添加包的所在的絕對位置。
最後補充一下我的問題是怎麼解決的:
在了解了路徑原理之後,仔細核對了出問題的路徑之後,發現from … import …的時候,from目錄不是從根目錄開始的,修改之後修復bug
❸ 如何改變__pycache__的存放路徑
不要你寫的代碼放在桌面並且運行啊,因為你在運行python腳本的時候,python解釋器會將 *.py 腳本文件進行編譯,並將編譯結果保存到__pycache__目錄中(這個文件夾只出現在Python3.2及其後的版本中,Python2下的編譯文件和源文件放同目錄。)。下次再執行工程時,若解釋器發現這個 *.py 腳本沒有修改過,就會跳過編譯這一步,直接運行以前生成的保存在 __pycache__文件夾里的 *.pyc 文件,這樣工程較大時就可以大大縮短項目運行前的准備時間;如果你只需執行一個小工程,沒關系 忽略這個文件夾就行。想要__pycache__文件夾不出現的話有兩種方式:
1.單次不出現: 在運行腳本時添加 -B 參數,例如:python -B foo.py
2.永久不出現: 設置環境變數 PYTHONDONTWRITEBYTECODE=1
希望對你有所幫助
❹ python怎樣生成可執行文件
1 安裝pyinstaller
如果你的網路穩定,通常直接使用下面的命令安裝即可:
pip install pyinstaller
2 開始打包
進入python需要打包的腳本所在目錄,然後執行下面的命令即可:
python -F -i favicon.ico nhdz.py
3 打包結果
打包完成後,進入到當前目錄下,會發現多了__pycache__、build、dist、nhdz.spec這四個文件夾或者文件,其中打包好的exe應用在dist目錄下面,
到這里,exe文件就已經生算是打包完成,並且可以運行了
❺ 我將c盤pycache移到d盤,卓面圖標掉失,怎樣復原
從d盤應用程序文件夾中找到此應用的圖標,右鍵點擊發送到桌面即可
❻ 為什麼我運行python代碼後目錄下不會生成pycache文件
運行的當前腳本(__main__)不會生成pycache,被import的那些moles才會
❼ python os模塊在哪個文件夾
python os模塊(os.py )在 LIB 文件夾
其編譯模塊( os.cpython-34.pyc )在 lib\_pycache_ 文件夾
❽ 怎麼在代碼里把.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代碼後目錄下不會生成pycache文件
如果程序需要使用一些配置文件時,一般也是用相對路徑的,這樣也容易出問題,這時需要在啟動程序時切換到程序所在的路徑。
sys.path[0] 是程序所在的目錄,在程序開頭處加上 os.chdir(sys.path[0]) 就可以了。
如果是使用 py2exe 打包的程序,sys.path[0] 值是 路徑名\library.zip , 再處理一下這個就可以:
ddir = sys.path[0]
if os.path.isfile(ddir):
ddir,filen = os.path.split(ddir)
os.chdir(ddir)