python - 为 scrapy 安装 python - 符号链接(symbolic link)和权限问题

标签 python scrapy symlink python-2to3

尽管我已经有 2.6、2.7.10 和 3.4.0,但我还是按照 Scrapy 安装指南安装了新的 python 副本 (2.7.11)。安装进行得很顺利,直到最后一步出现这些错误

==> Pouring python-2.7.11.el_capitan.bottle.2.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/2to3
Target /usr/local/bin/2to3
already exists. You may want to remove it:
  rm '/usr/local/bin/2to3'

To force the link and overwrite all conflicting files:
  brew link --overwrite python

To list all files that would be deleted:
  brew link --overwrite --dry-run python

Possible conflicting files are:
/usr/local/bin/2to3 -> /Library/Frameworks/Python.framework/Versions/3.4/bin/2to3
Error: Permission denied - /usr/local/Frameworks

此外

ls -l /usr/local/Frameworks
ls: /usr/local/Frameworks: No such file or directory

ls -l /usr/local/bin/2to3
lrwxr-xr-x  1 root  wheel  66  7 Apr  2014 /usr/local/bin/2to3 -> ../../../Library/Frameworks/Python.framework/Versions/3.4/bin/2to3

我的问题:

1) 我应该做 sudo brew install python 而不是 brew install python 吗?希望我不需要卸载 2.7.11 并重新开始。

2) 如果我执行他们建议的两个步骤 rm '/usr/local/bin/2to3'brew link --overwrite python,我还会这样做吗?能够运行 python 3.4.0 用于非 Scrapy 目的吗?想必我应该使用 sudo 来完成这些操作?

3) 如果我执行#2,/usr/local/Frameworks 上的权限问题会自行解决还是我需要执行其他操作?

跟进:

设置 virtualenv 的建议可能是一个不错的建议。但我想我可能需要先完成安装。

我现在已经删除了 2to3。我还尝试使用 sudo 运行 brew link --overwrite python 但它回来时胆怯地拒绝 sudo brew link msg,所以我只是继续并在没有 sudo 的情况下完成了它。

但是brew链接在权限上仍然失败

brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.11... Error: Permission denied - /usr/local/Frameworks

但是

ls -l /usr/local/Frameworks
ls: /usr/local/Frameworks: No such file or directory

此外,/usr/local/bin 中存在许多与现有 3.4.0(这些链接由 root 拥有)和新的 2.7.11(由我拥有)相关的链接。

那我现在该怎么办?非常感谢。

最佳答案

根据来自各个论坛的大量帖子,最推荐的最佳实践是让 homebrew 安装您需要的所有版本的 python,单独保留 OSX 捆绑的 python(且未使用)并删除所有其他版本,因为 homebrew 不一定能很好地运行和他们在一起。

根据this ,homebrew 应该能够处理共存的 2.7 和 3.x python。所以我关注了this advice删除我之前直接从 python.org 安装的 3.4。

我进一步遵循了 brew doctor 提供的建议,这些建议与上面链接中提到的如何删除非自制 python 的步骤非常相似。随后

brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.11... 5 symlinks created

brew doctor
Your system is ready to brew.

看来homebrew安装的2.7.11终于完成了。

我现在将使用 homebrew 安装最新的 3.x 版本并更新这篇文章。如果成功,我将进一步设置 virtualenv 来安装 Scrapy。

跟进:

brew install python3成功安装Python 3.5.1

pip install virtualenv成功安装virtualenv 15.0.1

virtualenv -p/usr/local/bin/python2.7 Scrapy 使用2.7成功设置“Scrapy”虚拟环境

source Scrapy/bin/activate 启动了“Scrapy”虚拟环境

pip install lxml成功安装lxml 3.6.0

pip install Scrapy成功安装Scrapy 1.1.0

pip freeze > Scrapy/requirements.txt 生成依赖项列表

deactivate 退出“Scrapy”虚拟环境

明天将尝试 Scrapy 教程,看看所有这些是否真的有效

关于python - 为 scrapy 安装 python - 符号链接(symbolic link)和权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37488439/

相关文章:

chef-infra - 尝试创建两个目录的符号链接(symbolic link)时 Chef 链接错误

python - 使用 Python 如何合并两列并仅在另一列中的数据存在时覆盖一列中的数据?

python - Celery 任务在 Django 应用程序中执行多次

python - 访问 Numpy 数组的列?尝试通过转置或通过列访问来执行的错误

python - Scrapy - 使用正则表达式选择 xpath

python - 从脚本运行 scrapy 时内存溢出

python - Sklearn 尝试将字符串列表转换为 float

python - 如何获取使用 JavaScript 构建的 anchor 标记的重定向链接?

linux - 如何找到链接到重命名卷的所有符号链接(symbolic link)?

python - 在不使用 os.chdir() 的情况下在 python 中创建相对符号链接(symbolic link)