0

編輯導入發佈訂閱時,將名爲service_account:無模塊試圖從google.cloud

的問題是,我試圖導入從ouath2client點子庫 但 我有Whatever稱爲當前模塊誰使用本地版本ouath2client - 如果我嘗試更新Whatever失敗。

所以我想用ouath2clientsite-packagespubsub 但本地目錄ouath2clientWhatever模塊。 試過這樣:

unique_path = '/root/.virtualenvs/simple_worker/lib/python2.7/site-packages' 
unique_path = '/root/.virtualenvs/simple_worker/lib/python2.7/site-packages' 
sys.path.insert(0, unique_path) 
from google.cloud import pubsub 
sys.path.remove(unique_path) 

而我依然得到ImportError: No module named service_account

試圖運行一個酒吧子。收到此錯誤:

File "/proj/Backend/WorkerScripts/runRecognizerAlgo/run.py", line 748, in <module> 
    from google.cloud import pubsub 
    File "/root/.virtualenvs/app_engine_workers/local/lib/python2.7/site-packages/google/cloud/pubsub/__init__.py", line 27, in <module> 
    from google.cloud.pubsub.client import Client 
    File "/root/.virtualenvs/app_engine_workers/local/lib/python2.7/site-packages/google/cloud/pubsub/client.py", line 19, in <module> 
    from google.cloud.client import JSONClient 
    File "/root/.virtualenvs/app_engine_workers/local/lib/python2.7/site-packages/google/cloud/client.py", line 17, in <module> 
    from oauth2client.service_account import ServiceAccountCredentials 
ImportError: No module named service_account 

相關點子:

gapic-google-pubsub-v1==0.10.1 
google-cloud-pubsub==0.21.0 
grpc-google-pubsub-v1==0.10.1 
oauth2client==3.0.0 

檢查在oauth2client目錄,但我確實看到service_account

ls /root/.virtualenvs/app_engine_workers/lib/python2.7/site-packages/oauth2client/ 
__init__.py _openssl_crypt.py  _pycrypto_crypt.py clientsecrets.py crypt.pyc   service_account.pyc util.pyc 
__init__.pyc _openssl_crypt.pyc  _pycrypto_crypt.pyc clientsecrets.pyc file.py    tools.py 
_helpers.py _pure_python_crypt.py client.py   contrib   file.pyc   tools.pyc 
_helpers.pyc _pure_python_crypt.pyc client.pyc   crypt.py   service_account.py util.py 

,所以我不知道在哪裏/google/cloud/client.py試圖從

進口

當試圖進入直接從蟒蛇控制檯

(app_engine_workers)[email protected]:/proj/Backend/Framework/Workers# p 
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from google.cloud import pubsub 
>>> 

然後它工作,很奇怪。

回答

0

pubsub不會全部得到評估pubsub本身是進口。稍後,他們會在運行時從sys.path中刪除unique_path後再進行評估。

真正的問題是如何導入具有相同名稱的兩個不同版本的Python模塊,這並不是Python可以讓你在不訴諸一些複雜的技巧的情況下做的事情。由於無論如何這通常是一個壞主意,理想的解決方案是重寫Whatever以使用oauth2client的最新版本。