Python行为从python2.7而不是python3.4运行

Mik*_*keJ 5 python-behave

当我运行行为时,它似乎是从python2.7运行的,并且无法找到为python3.4安装的硒。我是否需要配置行为以便在某个地方运行python3.4-在行为网站或其他地方什么也看不到。有关于在Python 3.4中使用行为的文章,因此是可能的。

这是我看到的:

$ behave 
...
 File "/usr/local/lib/python2.7/dist-packages/behave/runner.py", line 304, in exec_file
    exec(code, globals, locals)
  File "features/steps/home_page.py", line 2, in <module>
    from selenium import webdriver
ImportError: No module named selenium
Run Code Online (Sandbox Code Playgroud)

我已经PYTHONPATH指向python 3.4 / dist-packages:

$ echo $PYTHONPATH
/usr/local/lib/python3.4/dist-packages
$ ls /usr/local/lib/python3.4/dist-packages/selenium
common  __init__.py  __pycache__  selenium.py  webdriver
Run Code Online (Sandbox Code Playgroud)

/usr/local/lib/pythonX.X/dist-packages在XX是2.7和3.4的地方都安装了行为

任何帮助,不胜感激。

Lou*_*uis 2

如果您安装 Python 3.x 和 Python 2.7 的 Behave,则每次安装都会安装在该位置启动 Behave 的脚本/usr/local/bin/behave最后安装的那个将赢得冲突,因为它将覆盖另一个的文件。(输入的文件/usr/local/lib/python<version>/dist-packages没问题,因为<version>每种情况都不同。)

解决此问题的一种方法是仅在 Python 3 上安装 Behave。卸载 Python 2.7 版本并重新安装 Python 3 版本,它应该可以工作。

如果您确实需要为不同的项目使用这两个版本,那么您应该使用它virtualenv来为您正在处理的各个项目创建 Python 安装。这就是我为自己的项目所确定的。

  • 谢谢路易斯,你给我指出了答案。我曾尝试使用 pip 和 pip3 卸载并重新安装 - 尽管当 pip 认为Behavior 已经安装或与其他版本一起卸载时会出现混乱(不是说谁感到困惑,pip 还是我)。所以首先我只是编辑了 /usr/local/bin/behave 中的 shebang 来运行 python3 而不是 python,这就成功了。后来我让卸载/安装顺序正常工作并进行了相同的更改。因此,您可能只需编辑“behave”中的 shebang 即可解决问题。非常感谢。 (2认同)