簡體   English   中英

如何封裝python模塊?

[英]How to encapsulate python modules?

是否可以將python模塊“機械化”和“ BeautifulSoup”封裝到單個.py文件中?

我的問題如下:我有一個需要機械化和BeautifulSoup的python腳本。 我從php頁面調用它。 網絡主機服務器支持python,但未安裝模塊。 這就是為什么我要這樣做。

抱歉,這是一個愚蠢的問題。

編輯:謝謝大家的回答。 我認為解決方案圍繞virtualenv解決。 有人能以非常簡單的方式向我解釋一下嗎? 我已經閱讀了virtualenv頁面,但仍然很困惑。 再次感謝。

您實際上不必合並文件或將它們安裝在系統范圍內的位置。 只需確保庫位於Python腳本(因此,PHP應用程序)可讀取的目錄中並添加到Python加載路徑即可。

Python運行時在sys.path數組的目錄中搜索庫。 您可以在運行時使用PYTHONPATH環境變量將目錄添加到該數組,或者通過將項目顯式附加到sys.path 下面的代碼段已添加到Python腳本中,並將該腳本所在的目錄添加到搜索路徑,從而隱式地使位於同一位置的所有庫均可導入:

import os, sys
sys.path.append(os.path.dirname(__file__))

簽出virtualenv,以創建本地python安裝,您可以在其中安裝BeautifulSoup以及所需的所有其他庫。

http://pypi.python.org/pypi/virtualenv

不,您不能(通常),因為這樣做會破壞python使用的模塊搜索方法(文件和目錄)。 我想您可以通過一些技巧在沒有實際文件系統布局的情況下生成模塊層次結構,但這是一個巨大的技巧,可能類似於

>>> sha=types.ModuleType("sha")
>>> sha
<module 'sha' (built-in)>
['__doc__', '__name__']
>>> sha.foo=3
>>> sha.zam=types.ModuleType("zam")
>>> sha.foo
3
>>> dir(sha)
['__doc__', '__name__', 'foo', 'zam']

但是無論如何,您都必須生成創建此布局的代碼並將這些內容存儲到正確命名的標識符中。

您可能需要學習使用.egg文件。 它們是包含您的庫的唯一聚集實體,例如.jar文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM