[英]Issues with running Python script from command line using venv and pyenv
我創建了一個基本的 python 腳本,它調用了 API 等。 在目錄中我還創建了一個虛擬環境:
python -m venv venv
我一直在運行腳本是 VS Code 沒問題,並讓它指向./venv/bin/python
。
我想設置它以便它使用 cron 作業重復。 但是,我嘗試運行以下命令......
/Users/aaron/project/venv/bin/python /Users/aaron/project/extract_starling.py
...並收到此錯誤:
File "/Users/aaron/project/extract_starling.py", line 9, in <module>
account_id = config['starling_config']['account_id']
File "/Users/aaron/.pyenv/versions/miniforge3/lib/python3.9/configparser.py", line 963, in __getitem__
raise KeyError(key)
KeyError: 'starling_config'
應該注意,當我運行which python
而不是指向虛擬環境時,我得到這個......
/Users/aaron/.pyenv/versions/miniforge3/bin/python
我設置了pyenv
一段時間,雖然不知道為什么它說miniforge
。
無論如何,我想知道是否有人可以提供幫助,因為不太確定這里發生了什么。
編輯:
還應該注意我的腳本正在導入configparser
模塊,如果相關的話,在同一目錄中有一個config.conf
文件。 這是我腳本的第一部分:
import requests
import configparser
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# Config data for Starling
config = configparser.ConfigParser()
config.read('config.conf')
account_id = config['starling_config']['account_id']
Output 來自pyenv global
3.9.1
Output 來自python --version
3.9.7
Output 來自pyenv local
no local version configured
Output 來自pyenv versions
system
3.10.0
3.6.15
3.8.10
* 3.9.1 (set by /Users/aaron/.pyenv/version)
miniforge3
miniforge3/envs/tf
認為這是我自己的錯。
在我的腳本中,我替換了
config.read('config.conf
)`
和
import os
cwd = os.path.dirname(os.path.abspath(__file__))
config.read(f'{cwd}/config.conf')
它奏效了。 基本上提供完整路徑而不是相對路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.