日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python好多模块和c相识_Python-Cext名称空间与常规Python子模块混合?

發布時間:2025/3/20 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python好多模块和c相识_Python-Cext名称空间与常规Python子模块混合? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個問題有點類似于:

只是稍微扭動一下。這里我并不是要混合兩個C-ext,而是一個C-ext和一個常規的python子模塊。在

有沒有辦法讓C擴展在符號之間共享模塊命名空間“模塊“子模塊中的那些呢?在

我的模塊結構如下:facs/

facs/

__init__.py

setup.py

facs.so

[*.c files]

utils/

__init__.py

galaxy.py

如果從層次結構中刪除“utils”,則可以導入fac并查看facs.so方法:

^{pr2}$

但是當我放回utils子模塊并嘗試導入不同的部分時,一個名稱空間似乎屏蔽了另一個名稱空間(utils屏蔽了facs.so導出的符號):>>> import facs

>>> dir(facs)

['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']

>>> import facs.utils

>>> facs.utils.galaxy.rsync_genomes("phix")

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'module' object has no attribute 'galaxy'

>>> from facs.utils import galaxy

>>> galaxy.rsync_genomes("phix")

'Hello world'

如您所見,在dir(facs)、build、query和{}之后,galaxy都消失了

除非我改為執行from facs.utils import galaxy,否則無法正確導入

重新使用初始import語句并直接通過facs.utils.galaxy.rsync_genomes()進行訪問。在

總而言之,我對本模塊的預期用途是:>>> import facs

>>> dir(facs)

['__doc__', '__file__', '__name__', '__package__', 'build', 'query', 'remove'

, 'utils']

>>> facs.utils.galaxy.rsync_genomes("phix")

'Hello world'

(目前正在開發中)代碼位于:

萬一有人想自己試試。我用的是virtualenvs和我的$PYTHONPATH

似乎正確:/home/roman/.venvburrito/lib/python:

/home/roman/.virtualenvs/py27/lib/python2.7/site-packages

安裝似乎也很成功:cd ~/.virtualenvs/py27/lib/python2.7/site-packages/facs-2.0dev-py2.7.egg/

(py27)$ ls

EGG-INFO facs.py facs.pyc facs.so utils/

似乎沒有__init__.py文件實際被復制到頂層目錄,但是在那里觸摸或不觸摸它并不影響上面描述的導入行為。在

有什么想法嗎?提前謝謝!在

總結

以上是生活随笔為你收集整理的python好多模块和c相识_Python-Cext名称空间与常规Python子模块混合?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。