繁体   English   中英

使用 python3 而不是默认的 python 2.7 运行脚本

[英]Running script using python3 instead of default python 2.7

我已经编写了一个 python 程序来抓取某些网站......我正在使用scrapy这是一个 python 框架。

我已经设置了以下 cron 作业来运行抓取程序:

# m h  dom mon dow   command
PATH=/usr/local/bin
1 6 * * * cd /home/ubuntu/scrapers/my_scraper && /home/ubuntu/.local/bin/scrapy crawl my_spider >> /tmp/scraper.log 2>&1

上述程序使用的是 python 2.7。 我希望它使用python3运行...

我已经安装了 python3 和 pip3,并在 .bashrc 中添加了以下别名:

# .bashrc
alias python=python3
alias pip=pip3

但是当执行 cronttab 时,我收到以下错误:

  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/ubuntu/scrapers/my_scraper/my_scraper/spiders/spider.py", line 3, in <module>
    from python_json_config import ConfigBuilder

错误消息显示我的程序正在由 python 2.7 运行

该程序过去可以与 Python 2 一起正常工作,但我添加了python_json_config导入,我无法使用 python 安装此 package,这就是为什么我想使用 python3 运行程序。

背景

我不需要更新 Puthon 版本,我只需要使用 python 3 运行 scrapy 脚本。我关注了这个问题,这里接受的答案改变了.bashrc,这就是我这样做的原因。

我使用 apt-get 安装了 python 并使用 pip 安装了 scrapy ...我在安装时没有在.bashrc 中添加任何别名。

我的 Ubuntu 服务器是 Amazon EC2,我使用 Putty 连接到它。

Ubuntu 有一个特殊的行来阻止.bashrc在非交互式 shell 中运行。

您可以轻松更改此行为,并在运行脚本之前添加一行来运行.bashrc

1 6 * * * source /home/ubuntu/.bashrc && cd /home/ubuntu/scrapers/my_scraper && /home/ubuntu/.local/bin/scrapy crawl my_spider >> /tmp/scraper.log 2>&1

另一种选择是修改 cronjob 行以直接使用 Python 3 执行脚本:

1 6 * * * cd /home/ubuntu/scrapers/my_scraper &&  python3 /home/ubuntu/.local/bin/scrapy crawl my_spider >> /tmp/scraper.log 2>&1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM