【问题标题】:Question about installing packages on Python 2.7关于在 Python 2.7 上安装包的问题
【发布时间】:2020-10-17 23:34:51
【问题描述】:

我是 python 新手,我真的对很多事情感到困惑。我主要用 PHP 开发我的项目,但由于我的主机无法让我访问 v8js,我必须使用 python 来完成我的任务。

我不明白的是: 在我的服务器上运行 python 2.7,如果我使用 pip 安装某些软件包的最新版本,它会安装适用于 python 2.7 的版本,还是会安装它,即使它只在 python 3 中运行?

我正在尝试安装和使用https://pypi.org/project/cfscrape/,但我无法强制它工作,但是在 Repl.it 上尝试它时它可以正常工作。

所以我猜我的服务器上有些东西不对,但不知道是什么,因为我刚刚使用了 pip install cfscrape 并且它安装了那个包。

编辑: 你认为这个错误可能是使用 python 2 的结果,或者这与使用的 python 版本无关?所有depadances都已安装

Traceback(最近一次调用最后一次):

文件“/usr/lib64/python2.7/runpy.py”,第 151 行,在 _run_module_as_main mod_name, loader, code, fname = _get_module_details(mod_name)

文件“/usr/lib64/python2.7/runpy.py”,第 101 行,在 _get_module_details 中 loader = get_loader(mod_name)

文件“/usr/lib64/python2.7/pkgutil.py”,第 464 行,在 get_loader 返回 find_loader(全名)

文件“/usr/lib64/python2.7/pkgutil.py”,第 474 行,在 find_loader 对于 iter_importers(fullname) 中的导入器:

文件“/usr/lib64/python2.7/pkgutil.py”,第 430 行,在 iter_importers 进口(pkg)

文件“main.py”,第 3 行,在 test = scraper.get("https://www.klix.ba/koronavirus-u-bih").content

文件“/home/admin/.local/lib/python2.7/site-packages/requests/sessions.py”,第 543 行,在 get return self.request('GET', url, **kwargs)

文件“/home/admin/.local/lib/python2.7/site-packages/cfscrape/init.py”,第 129 行,在请求中 resp = self.solve_cf_challenge(resp, **kwargs)

文件“/home/admin/.local/lib/python2.7/site-packages/cfscrape/init.py”,第 204 行,在 solve_cf_challenge 答案,延迟 = self.solve_challenge(body, domain)

文件“/home/admin/.local/lib/python2.7/site-packages/cfscrape/init.py”,第 292 行,在 solve_challenge %BUG_REPORT

ValueError:无法在网站上识别 Cloudflare IUAM Javascript。 Cloudflare 可能已经改变了他们的技术,或者脚本中可能存在错误。

在 Repl.it 上它正在工作,而在我的服务器上它不是

【问题讨论】:

  • 我只需要“我是 python 新手”就可以向你建议你真的应该使用 Python 3。Python 2 已经死了(支持在将近一年前被放弃了)
  • 您链接到的页面对版本控制要求不是很明确,但是如果您点击进入cfscrape 项目的 Github 主页,它会声明支持 Python 2.6+。
  • cloudflare-scrape 在 python 2.7 到 3.7 中工作,所以,是的,您可以将它安装在您的机器上,查看自述文件 [README][1] [1]:github.com/Anorov/cloudflare-scrape#cloudflare-scrape
  • Tnx 我确实读过 Read me 并且我知道它应该支持 2.7 但我不确定它是否会自动检测到正在使用的版本然后安装该版本的代码(因为我理解 2 的代码和 3 的语法不同)

标签: python


【解决方案1】:

大多数 Python 开发人员会安装多个版本的 Python。这可能是因为操作系统包含旧的 Python 发行版,或者是开发人员自己从事具有不同 Python 版本的项目。

在一个系统上直接使用多个 Python 发行版运行 pip 可执行文件是不可预测且模棱两可的。您可以在 Linux 中使用 which 命令了解 pip 实际执行的内容:

❯❯❯ which pip                  
/home/abhishek/software/miniconda2/envs/quantum/bin/pip
❯❯❯ which pip2                 
/home/abhishek/.local/bin/pip2
❯❯❯ which pip3                 
/home/abhishek/software/miniconda2/envs/quantum/bin/pip3

使用 pip 的更好方法是显式指定要使用的 Python 可执行文件。这将确保 pip 将使用您指定的 python 版本

❯❯❯ python -m pip   # will use whatever python version this alias points to
❯❯❯ python2 -m pip  
❯❯❯ python3 -m pip  

PS:Python 2 已经贬值了。强烈建议对所有用例使用 Python 3

【讨论】:

  • Tnx 寻求答案。我也发现 python 2 已被废弃,但我的托管公司警告我,如果我们升级它,其他服务器组件可能会出现问题,因为它们在 python 上大量中继,它是 linux 服务器。但是,如果他们可以安装 python 3,然后允许我将它用于我的脚本并将 python 2 留给服务器,那就太好了
猜你喜欢
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
相关资源
最近更新 更多