【问题标题】:Beginner: Python can't find 'pyodbc' package?初学者:Python 找不到“pyodbc”包?
【发布时间】:2020-05-09 01:44:38
【问题描述】:

我对 Python 语言非常陌生,并且有一个小程序。它一直在工作,但发生了一些变化,现在我无法让它运行。查找“pyodbc”时出现问题。我安装了“pyodbc”包,所以我不明白为什么会出现错误。我正在使用 Python 3.7.6。感谢您的帮助!

pip install pyodbc

WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Requirement already satisfied: pyodbc in c:\users\c113850\appdata\roaming\python\python37\site-packages (4.0.28)

代码:

import requests
import pyodbc
from bs4 import BeautifulSoup
from datetime import datetime
import pytz 
import time
import azure.functions

page = requests.get("https://samplepage.html")

if page.status_code == 200:
    print(page.status_code)
    #print(page.content)

    soup = BeautifulSoup(page.content, 'html.parser')
    print(soup.title)
    rows = soup.find_all('tr')
    # for row in rows:          # Print all occurrences
    #    print(row.get_text())
    print(rows[0])
    print(rows[7])
    pjmtime = rows[0].td.get_text()
    print("PJM = ",pjmtime)

    #dt_string = "Tue Jan 21 18:00:00 EST 2020"
    dt_object = datetime.strptime(pjmtime, "%a %b %d %H:%M:%S EST %Y")
    print("Timestamp =", dt_object)

    eastern=pytz.timezone('US/Eastern')
    date_eastern=eastern.localize(dt_object,is_dst=None)
    date_utc=date_eastern.astimezone(pytz.utc)
    print("UTC =", date_utc)

    row = soup.find(text='PRICE').parent.parent
    name = row.select('td')[0].get_text()
    typed = row.select('td')[1].get_text()
    weighted = row.select('td')[2].get_text()
    hourly = row.select('td')[3].get_text()

    server = 'db.database.windows.net'
    database = '...'
    username = '...'
    password = '...'
    driver = '{ODBC Driver 17 for SQL Server}'

    cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
    cursor = cnxn.cursor()
    print("insert into [PJMLocationalMarginalPrice] ([Name],[Type],[WeightedAverage],[HourlyIntegrated],[TimeStamp]) values(?,?,?,?,?)",
               (name,typed,weighted,hourly,date_utc))
    cursor.execute("insert into [PJMLocationalMarginalPrice] ([Name],[Type],[WeightedAverage],[HourlyIntegrated],[TimeStamp]) values (?,?,?,?,?)",
               (name,typed,weighted,hourly,date_utc))
    cnxn.commit()
else:
    print("Error: page not open")

错误:

Traceback (most recent call last):
  File "c:/Users/C113850/PycharmProjects/Scraping101/Scraping.py", line 2, in <module>
    import pyodbc
ImportError: DLL load failed: The specified module could not be found.

更新: 我正在查看站点包下的文件夹,并注意到“pyodbc”文件夹不存在,但“pyodbc-4.0.28.dist-info”文件夹存在。

【问题讨论】:

  • 可能是MVC++ 的问题。你能试着检查一下你安装了什么 MVC++ 吗?
  • 我不确定 MVC++ 是什么。
  • 对不起,我刚刚也被我正在链接的线程中抓住了。 MVC++ == Microsoft Visual C++ Redist package

标签: python python-3.x pip


【解决方案1】:

模块未正确安装。

尝试重新安装它:

pip uninstall pyodbc
pip install pyodbc

如果这不起作用,请尝试使用 pip3:

pip uninstall pyodbc
pip3 install pyodbc

【讨论】:

    【解决方案2】:

    您在安装“pyodbc”时是否有一个活动的 Python 环境。如果是这样,您将需要在运行脚本之前激活环境,因为您无法访问该环境之外的包。

    如果没有,您可能只需要卸载并重新安装。

    pip uninstall pyodbc
    pip install pyodbc
    

    【讨论】:

    • 我尝试卸载/重新安装并得到同样的错误。不确定“活动”环境的目的。但是,我回到了我在互联网上遵循的说明并激活了 venu 并卸载/重新安装了我所有的包,现在我收到了关于“请求”的错误。我确实注意到一些包安装在我的用户帐户“c:\users\c113850\appdata\roaming\python...”下,而其他包安装在“c:\program files\python37\lib\site-packages\”下。 ..'
    【解决方案3】:

    我在 Github 上发现 pyodbc 版本 4.0.28 中存在错误,因此我降级到 4.0.27 并解决了我的问题。欲了解更多信息,click here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 2010-11-25
      • 2020-01-15
      • 2013-04-18
      • 1970-01-01
      相关资源
      最近更新 更多