[英]Import into python interpreter main namespace from an import
如何使用一個命令/導入從解釋器運行一堆導入和路徑追加? 如果導入另一個為我運行命令的模塊,則導入在主名稱空間中不可用。 與運行bash腳本類似,該腳本可在當前會話中修改/添加命令和變量。
恩。
import os, ...
sys.path.append(...)
如果我理解正確,那么您只是在尋找from … import …
語句。 例如:
lotsostuff.py:
import json
def foo(): pass
現在:
$ python3.3
>>> from lotsostuff import *
>>> json
<module 'json' from '/usr/local/lib/python3.3/json/__init__.py'>
>>> foo
<function lotsostuff.foo>
但是,您可能需要考慮其他選擇。 如果您只是想控制解釋器會話的啟動,則可以執行以下操作:
$ PYTHONSTARTUP=lotsostuff.py
$ python3.3
>>> json
<module 'json' from '/usr/local/lib/python3.3/json/__init__.py'>
>>> foo
<function __main__.foo>
注意最后一行的不同。 您現在在__main__
命名空間中運行lotsostuff
,而不是在單獨的命名空間中運行並獲取其所有成員。
同理:
$ python3.3 -i lotsostuff.py
>>> json
<module 'json' from '/usr/local/lib/python3.3/json/__init__.py'>
如果您每次在會話中都想這樣做,通常會使用PYTHONSTARTUP
如果只想一次,則使用-i
。
如果您想在會話中間而不是在啟動時做同樣的事情……好吧,您不能直接這樣做,但是您可以非常接近exec
(Python 3.x)(或Python 2中的execfile
)。 X)。
如果您確實想按照自己的描述進行操作(作為模塊的常規導入方式導入模塊,除了合並到您的命名空間中而不是單獨合並),則需要自定義導入過程。 使用importlib
並不難; 如果您不是使用Python 3.2或更高版本,則需要使用imp
更多工作。
兩者之間的差別差不多. ./foo
. ./foo
而不是我認為您正在尋找的bash
腳本中的./foo
。
如果您使用的是ipython
,則還有更酷的選擇。 (如果您不使用ipython
,則可能需要檢查一下。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.