在Windows上安装Fabric(错误:没有名为Readline的模块)

3 投票
6 回答
7818 浏览
提问于 2025-04-15 17:06

我正在尝试在Windows上使用Fabric 0.1.1这个部署工具(http://docs.fabfile.org/),但是遇到了readline模块的问题。我查阅了很多讨论,但还是没能解决这个问题。这很重要,因为我们无法从Windows机器上部署应用程序。

C:\Documents and Settings\dev\Desktop\deploy>fab
Traceback (most recent call last):
  File "C:\python\Scripts\fab-script.py", line 8, in <module>
    load_entry_point('fabric==0.1.1', 'console_scripts', 'fab')()
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\pkg_resources.py"
, line 277, in load_entry_point
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\pkg_resources.py"
, line 2180, in load_entry_point
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\pkg_resources.py"
, line 1913, in load
  File "build\bdist.win32\egg\fabric.py", line 25, in <module>
**ImportError: No module named readline**

安装这个模块时出现了:

**easy_install readline**
Searching for readline
Reading http://pypi.python.org/simple/readline/
Reading http://www.python.org/
Best match: readline 2.6.4
Downloading http://pypi.python.org/packages/source/r/readline/readline-2.6.4.tar
.gz#md5=7568e8b78f383443ba57c9afec6f4285
Processing readline-2.6.4.tar.gz
Running readline-2.6.4\setup.py -q bdist_egg --dist-dir c:\docume~1\ji81b9~1.che
\locals~1\temp\easy_install-pzkz1a\readline-2.6.4\egg-dist-tmp-szs2ps
Traceback (most recent call last):
  File "C:\python\Scripts\easy_install-script.py", line 8, in <module>
    load_entry_point('setuptools==0.6c9', 'console_scripts', 'easy_install')()
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\comman
d\easy_install.py", line 1671, in main
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\comman
d\easy_install.py", line 1659, in with_ei_usage
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\comman
d\easy_install.py", line 1675, in <lambda>
  File "c:\python\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "c:\python\lib\distutils\dist.py", line 975, in run_commands
    self.run_command(cmd)
  File "c:\python\lib\distutils\dist.py", line 995, in run_command
    cmd_obj.run()
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\comman
d\easy_install.py", line 211, in run
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\comman
d\easy_install.py", line 446, in easy_install
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\comman
d\easy_install.py", line 476, in install_item
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\comman
d\easy_install.py", line 655, in install_eggs
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\comman
d\easy_install.py", line 930, in build_and_install
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\comman
d\easy_install.py", line 919, in run_setup
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\sandbo
x.py", line 27, in run_setup
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\sandbo
x.py", line 63, in run
  File "c:\python\lib\site-packages\setuptools-0.6c9-py2.6.egg\setuptools\sandbo
x.py", line 29, in <lambda>
  File "setup.py", line 93, in <module>
AttributeError: 'module' object has no attribute 'symlink'

有没有人解决过这个问题,或者能给出一些替代方案吗?

6 个回答

2

试试这个 readline 模块吧。它是专门为Windows设计的,可以在IPython中提供一些额外的功能,这些功能在默认情况下是没有的,可能会对你正在做的事情有所帮助。

4

按照以下步骤操作,我成功安装了:

1) 从这里下载了适用于x86的MSI安装程序

2) 安装在默认的C:\Python27目录下。

3) 创建一个新文件夹:C:\Python27\Scripts

4) 把C:\Python27和C:\Python27\Scripts添加到系统路径中:

高级系统设置>环境变量>路径

5) 从这里下载distribute_setup.py到C:\Python27\Scripts文件夹。

6) 打开命令行,进入C:\Python27\Scripts目录,运行:'python distribute_setup.py'

7) 然后运行'easy_install pip'

8) 接着运行'pip install fabric'

9) 你可能会看到一个错误,提示PyCrypto无法安装。你可以从这里下载预编译的Windows二进制文件。运行这个文件来安装PyCrypto。

10) 再次运行'pip install fabric',这时应该会显示一切都已安装。

11) 在另一个目录(比如c:\dev\hello)创建一个fabfile.py,并添加以下代码:

def hello(name="world"):
    print("Hello %s!" % name)

12) 切换到这个目录,运行'fab hello:working'。你应该能看到输出:

Hello working!

Done.
4

你想用 easy_install 安装的 readline 模块是为 OS X 系统准备的,不适用于 Windows。虽然有一些可以在 Windows 上使用的替代品,但你可以先试着把 fabric 更新到一个更新的版本(现在有 0.9 版本)。

查看 0.9 版本的源代码后发现,它并不依赖于 readline

撰写回答