簡體   English   中英

導入錯誤:沒有名為 pexpect 的模塊

[英]ImportError: No module named pexpect

我正在使用 Fabric 並想使用 fexpect。 我有以下 Python 腳本:

from ilogue.fexpect import expect, expecting, run

(...)

def install_postgresql(profile):
print("!!! Installing PostgreSQL...")
print(' -> Doing pre-cleanup...')

# Remove PostgreSQL if it exists

prompts = []
prompts += expect('Do you want to continue [Y/n]? ', 'Y')

with settings(warn_only=True):
    with expecting(prompts):
        run('sudo apt-get purge postgresql')

print(' -> Doing actual installation...')

# Install PostgreSQL

prompts = []
prompts += expect('Do you want to continue [Y/n]? ', 'Y')

with expecting(prompts):
    run('sudo apt-get install postgresql')

# In some cases PostgreSQL has issues with Ubuntu's default kernel params
# that prevent PostgreSQL to start automatically, so we try to start it
# TODO: Fix it
with settings(warn_only=True):
    run('sudo service postgresql start')

執行時出現以下錯誤:

[xxx.xxx.xxx.xxx] out: Traceback (most recent call last):
[xxx.xxx.xxx.xxx] out:   File "/tmp/fexpect_MbW3QP6Zpy5KBjBGQcaYxi", line 4, in <module>
[xxx.xxx.xxx.xxx] out:     import pexpect
[xxx.xxx.xxx.xxx] out: ImportError: No module named pexpect

我正在使用 virtualenv 並且實際安裝了 pexpect:

(venv)PALM00545424A:woopup i841712$ pip install pexpect
Requirement already satisfied (use --upgrade to upgrade): pexpect in ./venv/lib/python2.7/site-packages

找到了解決辦法。

pexpect 不是遠程機器的 Python 安裝的一部分。

我只是執行

sudo -E pip install pexpect 

在遠程機器上。

事實上,如果你的腳本使用了 fexcept,你需要運行的命令實際上是:

sudo -E pip install fexpect 

不是直接回答您的問題,但是像chef、puppet 或salt 這樣的工具更適合安裝系統包。

使用 pexpect lib 與 gatttool 交互時,我遇到了同樣的錯誤。 我使用 Pycharm 在樹莓派上遠程調試代碼。 這是Pycharm處理的命令和錯誤輸出

sudo+ssh://pi3@192.168.x.x:22/usr/bin/python3 -u /tmp/pycharm_project_55/Rasp_Pi/BluetoothBLEComm.py
Traceback (most recent call last):
  File "/tmp/pycharm_project_55/Rasp_Pi/BluetoothBLEComm.py", line 33, in <module>
    import pexpect
ModuleNotFoundError: No module named 'pexpect'

花了幾個小時后,我發現問題出在我在 Pycharm 中配置遠程 Python 解釋器時檢查的選項。 它是通過 sudo 以 root 權限執行代碼的選項。

**sudo**+ssh://pi3@192.168.x.x:22/usr/bin/python3...

pexpect 包僅為我的本地 pi3 用戶安裝。 因此,為了解決這個問題,我必須使用 sudo 安裝 pexpect 或取消選中以 root 權限執行代碼的選項。

暫無
暫無

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

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