1. python關於.pyd文件無法import的問題的解決方法
當我想載入pyd文件,用Python調用裡面的函數時
使用語句:import tick_gy as gal
pycharm編譯器報錯: MoleNotFoundError error from .pyd file: MoleNotFoundError: No mole named"tick_gy" 表示一直找不到該模塊
找了半天,最終解決了此問題,特此分享給大家。卜芹笑如果大神有更好的辦法請留言,謝謝分享。
一種可能是:.pyd文件名稱 於該語句中的「import tick_gy as gal」不一致
另外一種可能是:.pyd文件目錄錯誤,應放在在Python編譯器的Lib/site-packages目錄下
還有一種可能是:環境變數。Python文件找不到.pyd文件目錄,應將.pyd文件目錄添加至環境變數中
1. 手動添加環境變數。採用系統手動添加
2.將該語句放置在import tick_gy as gal語句前
sys.path.append('C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python39\\Lib\\site-packages')
os.environ['path'] += ';C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python39\\Lib\\site-packages'
在嘗試了三種可能性操作了,統統失敗。最終原因是因為pycahrm編譯器為Python39,首模而生成.pyd文件的編譯器是Python37。兩者編譯器版本不兼容,將Python39卸載,重裝Python37,無需上述操作型含,成功!
2. python怎麼導入同一包的模塊
一、何為模塊
1.一個模塊就是一個包含了python定義和聲明的文件,文件名就是模塊名字加上.py的後綴。
2.模塊目的和函數,對象等一樣,是為了代碼的復用性而存在的。即一個py程序寫了很多功能,也可以被其他py程序調用。被調用後被作為模塊,此時會產生一個pyc的文件即為這個模塊的緩存文件,相當於編譯了模塊文件使該py模塊被調用的速度變快。一個大的項目一個人肯定是不行的,所以模塊也為程序員相互間的合作提供了便利。
二、模塊妙用
1.import
只需要在py程序開頭加上import 文件名(不能有.py後綴)。例如,模塊的文件名是span.py,那麼只需在自己的py程序加import span。
2. import可以在程序的任意位置調用,但一次調用後會駐留內存,下次再調用會直接調用內存中的模塊(python的優化)。
3.個模塊都是一個獨立的名稱空間,定義在這個模塊中的函數,把這個模塊的名稱空間當做全局名稱空間,這樣我們在編寫自己的模塊時,就不用擔心我們定義在自己模塊中全局變數會在被導入時,與使用者的全局變數沖突。
print('from the spam.py')
money=1000def read1(): print('spam->read1->money',1000)def read2(): print('spam->read2 calling read')
read1()def change(): global money
money=0
支持tab自動補全
3. python中模塊導入的方法
python中模塊導入的方法:
方式一:使用 import 語句來引入模塊
直接使用關鍵詞import,後面跟具體的模塊名稱,就可以導入某一個模塊。同一個模塊不管執行了多少次import,都只會被導入一次,以防止模塊被一遍又一遍的執行。
方式二:使用from…import 語句來引入模塊
在使用import語句導入模塊時會將整個模塊引入進來,而使用from...import 語句則是從模塊中導入一個指定的部分到當前命名空間中。如上面代碼中則只會導入pprint模塊中的pprint函數,其他函數並不會導入。
方式三:使用from…import語句來引入模塊
在多數情況下,Python程序員都不會使用這個功能,因為它在解釋器中引入了一組未知的名稱,而它們很可能會覆蓋一些你已經定義過的東西。
注意通常情況下從一個模塊或者包內調入 * 的做法是不太被接受的, 因為這通常會導致代碼的可讀性很差。不過,在互動式編譯器中為了節省打字可以這么用。
模塊的好處
1、大大提高了代碼的可維護性。
2、代碼不必從零開始,一個模塊編寫完畢之後,其他模塊可以直接調用,節約了工作時間。
3、避免函數名稱和變數名稱重復,在不同的模塊中可以存在相同名字的函數名和變數名,但是盡量不要和系統內置的模塊名稱重復。
4. python中time解析未導入怎麼解決
我提供一下解決思路,希望可以幫助到你。
首先,看你這個界面應該是windows系統,打開命令提示符窗口,輸入python,打開python的交互界面,輸入導入模塊命令
import time
查看是否可以正常導入,因為time模塊是自帶的核心模塊,正常情況下都可以導入成功,如果導入失敗,說明python安裝過程中出錯,需要重新安裝。
如果可以導入成功,繼續下面的步驟,
點擊pycharm左上角的file選項,點擊下拉菜單里的settings,打開以後,裡面有一個project,點開可以看到project interpreter,點擊它,右邊會有一個你當前這個腳本的python編譯器路徑,如下圖所示,把它記下來。
然後去你的系統里去找,看和你安裝的python是不是一個路徑,如果不是一個路徑,說明python編譯器位置不對,改成你安裝的那個路徑就可以了。
如果是一個路徑,你可以嘗試運行一下你的那個腳本,有時候就是臨時沒有識別出來,但是運行的時候可以正常找到。
不知道我講清楚了沒有,希望可以幫助到你。
5. 關於 .pyx文件的編譯和導入
Date: 2020/03/21
Author: CW
前段時間學習了 NMS(非極大值抑制) 的各種版本實老鎮現,其中包括 Cython 版本,需要對 .pyx文件進行編譯,在此針對學習內容記錄一番。
首先確保安裝了Cython。
以文件名為 nms.pyx 為例,新建一個用於編譯的.py文件,比如 setup.py,內容如下圖所示。
接著執行該py文件: python setup.py build_ext --inplace 即可完成編譯, 最終會生成一個 .c文件。
若編譯過程中報錯: numpy/arrayobject.h」: No such file or directory ,則需要修改下setup.py文件,內容變為如下:
紅框所示為增加的內容,最後再按照上述方法執行該文件進行編譯即可。
和正常py模塊一樣導入即可,比如要導入以上的 nms.pyx,則為 import nms。
如提示梁歲無法導入,則嘗試在 import 相應包之前添加如下內容:
import pyximport
侍渣粗 pyximport.install()
6. 我在按書上編譯python 源碼時,老是提示錯誤,雖然輸入正確,編譯不成功(eclisp工具)
我復制你的代碼運行了一遍,沒問題啊。
filemunu=wx.Menu()
filemenu.Append(wx.ID_ABOUT, "&About"," Information about this program")
看來沒問題的是源代碼,你自己寫的還是有問題,filemenu都沒有定義,為什麼呢,因為你定義的是filemunu而不是filemenu。。。。。。
7. python導入libxml2dom不成功,求助
最近一個python項目需要用到libxml2dom這個包,然後就pip安裝之,之後驗證安裝是否成功:
shandow@mac:~ > python
Python 2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "right", "credits" or "license" for more information.
>>> import libxml2dom
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
File "/Library/Python/2.7/site-packages/libxml2dom/__init__.py", line 24, in <mole>
from libxml2dom.macrolib import *
File "/Library/Python/2.7/site-packages/libxml2dom/macrolib/__init__.py", line 26, in <mole>
from libxml2dom.macrolib.macrolib import *
File "/Library/Python/2.7/site-packages/libxml2dom/macrolib/macrolib.py", line 30, in <mole>
from libxmlmods import libxml2mod
ImportError: No mole named libxmlmods
意思是缺乏libxmlmods庫,使用pip安裝之,提示找不到。。。。好吧,度娘問吧,找到一個類似libxml2dom的官方聲明似的網站:
libxml2dom
Current release: libxml2dom 0.5 (requiring the low-level libxml2 Python bindings, typically provided by the python-libxml2 or libxml2-python packages for various GNU/Linux distributions: Ubuntu, Debian, Fedora, Red Hat, SuSE)
Introction
The libxml2dom package provides a traditional DOM wrapper around the Python bindings for libxml2. In contrast to the standard libxml2 bindings, libxml2dom provides an API reminiscent of minidom, pxdom and other Python-based and Python-related XML toolkits. Performance is fairly respectable since libxml2dom makes direct use of libxml2mod - the low-level wrapping of libxml2 for Python. Moreover, serialisation of documents is much faster than many other toolkits because libxml2dom can make direct use of libxml2 rather than employing Python-level mechanisms to visit and serialise nodes.
Copyright and Licence
libxml2dom is licensed under the LGPL version 3 (or later).
這里第一句話就是libxml2dom依賴libxml2庫,可以通過查找python-libxml2或者libxml2-python下載,可是偶使用pip安裝都提示找不到資源。。。。好吧,再次度娘,手動下載了這個包。這里貼出我分享出來的地址:libxml2下載(我的是mac
os系統,windows系統的自行下載吧,哈哈。。。)再說下mac os下如何安裝:
1.先把下載的tar包放到自己python環境的site-packages,我的是:
/Library/Python/2.7/site-packages
2.解壓:sudo tar -xvf libxml2-2.7.8.tar
3.進入解壓後的文件夾,由於是源碼包需要編譯安裝:
cd libxml2-2.7.8
sudo ./configure
sudo make
sudo make install
好了,如果沒有報錯就ok了,測試下把:
python
import libxml2
提示沒有這個模塊,說明沒有導成功,郁悶。。。。
重新進入文件夾 :
cd libxml2-2.7.8
發現這個文件夾中有個python文件夾,進入:
shandow@mac:/Library/Python/2.7/site-packages/libxml2-2.7.8 > cd python/
shandow@mac:/Library/Python/2.7/site-packages/libxml2-2.7.8/python > ll
total 5704
-rw-r--r-- 1 root network 132 11 17 10:46 MANIFEST
-rw-r--r-- 1 root network 31357 11 17 10:43 Makefile
-rw-rw-r--@ 1 50138 network 1542 11 4 2010 Makefile.am
-rw-rw-r--@ 1 50138 network 32443 11 5 2010 Makefile.in
-rw-rw-r--@ 1 50138 network 1272 9 24 2009 README
-rw-rw-r--@ 1 50138 network 1623 9 24 2009 TODO
drwxr-xr-x 4 root network 136 11 17 10:46 build
-rw-rw-r--@ 1 50138 network 15061 9 24 2009 drv_libxml2.py
-rw-r--r-- 1 root network 0 11 17 10:44 gen_prog
-rwxrwxr-x@ 1 50138 network 47541 10 16 2010 generator.py
-rw-rw-r--@ 1 50138 network 104464 11 3 2010 libxml.c
-rw-r--r-- 1 root network 271 11 17 10:44 libxml.lo
-rw-r--r-- 1 root network 297240 11 17 10:44 libxml.o
-rw-rw-r--@ 1 50138 network 22817 10 12 2010 libxml.py
-rw-r--r-- 1 root network 126532 11 17 10:44 libxml2-export.c
-rw-r--r-- 1 root network 434813 11 17 10:44 libxml2-py.c
-rw-r--r-- 1 root network 112512 11 17 10:44 libxml2-py.h
-rw-r--r-- 1 root network 283 11 17 10:44 libxml2-py.lo
-rw-r--r-- 1 root network 819684 11 17 10:44 libxml2-py.o
-rw-rw-r--@ 1 50138 network 18669 10 12 2010 libxml2-python-api.xml
-rw-r--r-- 1 root network 341257 11 17 10:44 libxml2.py
-rw-r--r-- 1 root network 318440 11 17 10:44 libxml2class.py
-rw-r--r-- 1 root network 22768 11 17 10:44 libxml2class.txt
-rw-r--r-- 1 root network 1166 11 17 10:44 libxml2mod.la
-rw-rw-r--@ 1 50138 network 7277 10 12 2010 libxml_wrap.h
-rwxr-xr-x 1 root network 6685 11 17 10:43 setup.py
-rwxrwxr-x@ 1 50138 network 6707 9 24 2009 setup.py.in
drwxrwxr-x@ 55 50138 network 1870 11 17 10:43 tests
-rw-rw-r--@ 1 50138 network 21068 10 12 2010 types.c
-rw-r--r-- 1 root network 268 11 17 10:44 types.lo
-rw-r--r-- 1 root network 63320 11 17 10:44 types.o
shandow@mac:/Library/Python/2.7/site-packages/libxml2-2.7.8/python >
參照網上說的python第三方包的安裝方式:
sudo python setup.py build
sudo python setup.py install
這兩句運行完後,重新進入site-packages文件夾,發現多了libxml2的egg-info文件:
再次測試:
shandow@mac:/Library/Python/2.7/site-packages > python
Python 2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "right", "credits" or "license" for more information.
>>> import libxml2
>>> import libxml2dom
>>>
libxml2安裝成功了,libxml2dom也不會報錯了,大功告成。。。。。網上網路,google都沒有這個問題的解決辦法,作者這里原創一個,哈哈。。。