簡體   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