亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

編譯的Python版本:導入時出現ModuleNotFoundError

編譯的Python版本:導入時出現ModuleNotFoundError

紅顏莎娜 2023-09-05 15:44:48
conda我有一個在python 3.7.7(在 Linux 上)運行的環境中的項目。當我重新編譯相同版本的 python (3.7.7) 并將可執行文件放置/替換在同一位置時,我希望程序以相同的方式運行,但導入失敗。使用原始版本的 python:(condaenv) mypc:~/Proj$ /home/me/.conda/envs/condaenv/bin/python3.7.bakPython 3.7.7 (default, Mar 26 2020, 15:48:22) [GCC 7.3.0] :: Anaconda, Inc. on linuxType "help", "copyright", "credits" or "license" for more information.>>> import gym>>> quit()編譯后的版本:(condaenv) mypc:~/Proj$ /home/me/.conda/condaenv/proj/bin/python3.7Python 3.7.7 (default, Sep 24 2020, 16:28:06) [GCC 9.3.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import gymTraceback (most recent call last):  File "<stdin>", line 1, in <module>ModuleNotFoundError: No module named 'gym'>>> quit()環境變量應該與我從同一位置、同一終端上運行時相同,而不會在兩次調用之間更改它。由于第一次導入沒有任何問題,所以軟件包安裝得很好。系統導入sys在兩個版本中都可以正常工作,但我必須LD_LIBRARY_PATH在編譯版本之前導出,而“正常”版本則不然。但是在兩次調用之間保持LD_LIBRARY_PATH不變不會改變任何東西。第二次調用找不到匹配的包會發生什么情況?我缺少什么?
查看完整描述

2 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

和標志可能--without-pymalloc會導致錯誤。將 miniconda 中的二進制文件替換為使用編譯庫構建的二進制文件或阻止導入已編譯的庫,例如和。不使用任何標志(即)進行編譯不會導致這些錯誤。導入編譯庫時進行編譯也不會引發錯誤。--with-pydebug./configurepython3.7./configure --without-pymalloc./configure --with-pydebugmathnumpy./configure && make./configure --with-valgrind


較舊的答案:

您可以嘗試使用conda-forge 使用的配置標志嗎?使用這些標志,我能夠python3.7在 conda 環境中替換二進制文件,并且導入繼續工作。如果我使用 OP 的標志(即--without-pymalloc --with-pydebug --with-valgrind),則導入編譯的庫不起作用(例如 math、numpy)。

curl?-L?https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz?|?tar?xJ
cd?Python-3.7.7./configure?\
????--prefix=/tmp/python3.7?\
????--enable-ipv6?\
????--with-ensurepip=no?\
????--with-computed-gotos?\
????--with-system-ffi?\
????--enable-loadable-sqlite-extensions?\
????--with-lto?\
????--enable-optimizations?\
????--with-valgrind
make?-j

該解決方案涉及這些標志之一 - 也許--with-lto--enable-optimizations



查看完整回答
反對 回復 2023-09-05
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

你在哪里編譯了新的Python?缺少 lib 可能librt.so.1是錯誤消息的罪魁禍首。是否有機會安裝該librt軟件包(取決于您的 Linux 風格)并重新編譯 Python。



查看完整回答
反對 回復 2023-09-05
  • 2 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號