簡體   English   中英

使用 venv 和 pyenv 從命令行運行 Python 腳本的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM