Python - нет модуля с именем «fabric.api» - Windows 10 - PullRequest
0 голосов
/ 16 октября 2018

Я только что установил Python 3.7 и Fabric.

Он отлично работает на моем ноутбуке, но не на рабочем столе.

Ошибка:

Traceback (most recent call last):
File "C:\Program Files (x86)\Python37-32\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "C:\Program Files (x86)\Python37-32\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\python_project\myProject\env\Scripts\fab.exe\__main__.py", line 9, in <module>
File "c:\python_project\myProject\env\lib\site-packages\invoke\program.py", line 352, in run
self.parse_collection()
File "c:\python_project\myProject\env\lib\site-packages\invoke\program.py", line 444, in parse_collection
self.load_collection()
File "c:\python_project\myProject\env\lib\site-packages\fabric\main.py", line 82, in load_collection
super(Fab, self).load_collection()
File "c:\python_project\myProject\env\lib\site-packages\invoke\program.py", line 661, in load_collection
module, parent = loader.load(coll_name)
File "c:\python_project\myProject\env\lib\site-packages\invoke\loader.py", line 76, in load
module = imp.load_module(name, fd, path, desc)
File "C:\Program Files (x86)\Python37-32\lib\imp.py", line 235, in load_module
return load_source(name, filename, file)
File "C:\Program Files (x86)\Python37-32\lib\imp.py", line 172, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 696, in _load
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\python_project\myProject\fabfile.py", line 2, in <module>
from fabric.api import task, run, env, settings, hide
ModuleNotFoundError: No module named 'fabric.api'

Но Fabricкажется установленным?

C:\Users\MyUser>pip install fabric
Requirement already satisfied: fabric in c:\program files (x86)\python37 32\lib\site-packages (2.4.0)

C:\Users\MyUser>pip show fabric
Name: fabric
Version: 2.4.0
Summary: High level SSH command execution
Home-page: http://fabfile.org
Author: Jeff Forcier
Author-email: jeff@bitprophet.org
License: BSD
Location: c:\program files (x86)\python37-32\lib\site-packages
Requires: paramiko, cryptography, invoke
Required-by:

Однако "ткань" не появилась в списке, когда я в режиме ожидания выполняю следующее (только Fabfile):

>>> import pkgutil
>>> [name for _, name, _ in pkgutil.iter_modules()]
['fabfile', '_asyncio', '_bz2', ... 'enum', 'filecmp', 'fileinput', ...]

Я также пыталсяудалить / переустановить Fabric, но она все еще не работает.

У вас есть идеи, почему я не могу импортировать fabric.api?

Обновление:

Я также создал виртуальную среду:

py -3 -m venv env 
code . 

Выбранный интерпретатор Python "venv" в коде Visual Studio затем:

python -m pip install fabric 

Но я все еще сталкиваюсь с той же ошибкой: - /

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Я вижу, вы уже установили fabric 2.4.0, и это здорово!Поскольку вы используете fabric 2.4.0, вы не можете использовать from fabric.api import taks.fabric.api можно использовать, если вы используете fabric1xx

Если вы хотите импортировать соединение и задачу из fabric2.4.0, вы должны сделать это следующим образом

from fabric import Connection as connection, task

@task
def deploy(ctx):
    with connection(host=host, user=user) as c:
         c.run('ls -la')

Примечание: ткань 3 не является официальной вилкой.Я советую вам использовать fabric2.4.0

0 голосов
/ 17 октября 2018

Через несколько исследований я, наконец, нашел обходной путь, используя fabric3 (ветвь Fabric, совместимый с python 3).

pip uninstall fabric
pip install fabric3

Ссылка: https://pypi.org/project/Fabric3/

...