小编Mis*_*agi的帖子

ImportError:无法使用 Python 3.10 从“集合”导入名称“...”

我正在尝试运行使用各种依赖项的程序,但自从升级到 Python 3.10 后,这不再起作用。当我在终端中运行“python3”并从那里导入我的依赖项时,出现错误:

ImportError: cannot import name 'Mapping' from 'collections' (/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/collections/__init__.py)
Run Code Online (Sandbox Code Playgroud)

这似乎是一个普遍问题,但这是我的具体案例的回溯:

Traceback (most recent call last):
 File "/Users/mk/Flasktut/app.py", line 2, in <module>
  from flask import Flask, render_template
 File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/flask/__init__.py", line 14, in <module>
  from jinja2 import escape
 File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/jinja2/__init__.py", line 33, in <module>
  from jinja2.environment import Environment, Template
 File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/jinja2/environment.py", line 16, in <module>
  from jinja2.defaults import BLOCK_START_STRING, \
 File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/jinja2/defaults.py", line 32, in <module>
  from jinja2.tests import TESTS as DEFAULT_TESTS
 File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/jinja2/tests.py", line 13, in <module>
  from …
Run Code Online (Sandbox Code Playgroud)

python importerror python-collections python-3.10

66
推荐指数
4
解决办法
21万
查看次数

typed-ast 的构建轮子失败

尝试安装程序 ( pip install -r requirements.txt) 的要求时,pip 失败并显示以下完整输出:

superadmin@diskstation:/volume1/scripts/movies/trakt.plex.scripts-master$ sudo /volume1/@appstore/py3k/usr/local/bin/pip3 install -r requirements.txt
Password:
Collecting astroid==2.3.2
  Using cached astroid-2.3.2-py3-none-any.whl (205 kB)
Collecting certifi==2019.9.11
  Using cached certifi-2019.9.11-py2.py3-none-any.whl (154 kB)
Collecting chardet==3.0.4
  Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting idna==2.8
  Using cached idna-2.8-py2.py3-none-any.whl (58 kB)
Collecting isort==4.3.21
  Using cached isort-4.3.21-py2.py3-none-any.whl (42 kB)
Requirement already satisfied: lazy-object-proxy==1.4.2 in /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages (from -r requirements.txt (line 6)) (1.4.2)
Collecting mccabe==0.6.1
  Using cached mccabe-0.6.1-py2.py3-none-any.whl (8.6 kB)
Collecting oauthlib==3.1.0
  Using cached oauthlib-3.1.0-py2.py3-none-any.whl (147 kB)
Processing /root/.cache/pip/wheels/03/22/4e/8993c46d8cbb81c71115a39595162be5ff7193c1810afd4ce2/PlexAPI-3.2.0-py3-none-any.whl
Collecting …
Run Code Online (Sandbox Code Playgroud)

python python-3.x synology

23
推荐指数
2
解决办法
4万
查看次数

到处使用“from __future__ import 注解”有什么缺点吗?

PEP 563来看,似乎应该有轻微的性能提升,因为它解决了

类型提示在模块导入时执行,这在计算上不是免费的。

那么...我是否可以/应该将其包含from __future__ import annotations在包中的每个文件中,或者是否有任何原因应将其从某些文件中排除?

python annotations python-typing

17
推荐指数
1
解决办法
8594
查看次数

Pycharm 2017.2.4始终在后台运行查询骨架更新

每当我重新启动pycharm它时,Querying skeleton update即使我没有更改/修改或更新我的任何python库,也会在后台启动进程.我使用Anaconda 5.0作为我的默认设置,并且只在系统上安装了python版本.

由于这个过程,pycharm启动应用程序后最初响应需要很长时间.

当没有对python库进行任何更改或者我必须禁用它时,是否有任何设置不运行此更新.

我缺少任何设置或更改吗?

我还附加了生成的日志文件.

编辑:

问题还是一样用2017.3.1,2018版本Pycharm的.

pycharm python-3.x anaconda

14
推荐指数
1
解决办法
2513
查看次数

pandas to gbq 声称模式不匹配,而模式完全相同。在github上,所有问题都声称已在2017年解决

我正在尝试通过 Pandas 将表附加到不同的表,从 BigQuery 中提取数据并将其发送到不同的 BigQuery 数据集。虽然表架构完全相同,但我收到错误““请验证结构和“pandas_gbq.gbq.InvalidSchema:请验证数据帧中的结构和数据类型是否与目标表的架构匹配。”

这个错误发生在我之前去覆盖表的地方,但在这种情况下,数据集太大而无法做到这一点(这不是一个可持续的解决方案)。

    df = pd.read_gbq(query, project_id="my-project", credentials=bigquery_key,
                     dialect='standard')
    pd.io.gbq.to_gbq(df, dataset, projectid,
                     if_exists='append',
                     table_schema=[{'name': 'Date','type': 'STRING'},
                                   {'name': 'profileId','type': 'STRING'},
                                   {'name': 'Opco','type': 'STRING'},
                                   {'name': 'country','type': 'STRING'},
                                   {'name': 'deviceType','type': 'STRING'},
                                   {'name': 'userType','type': 'STRING'},
                                   {'name': 'users','type': 'INTEGER'},
                                   {'name': 'sessions','type': 'INTEGER'},
                                   {'name': 'bounceRate','type': 'FLOAT'},
                                   {'name': 'sessionsPerUser','type': 'FLOAT'},
                                   {'name': 'avgSessionDuration','type': 'FLOAT'},
                                   {'name': 'pageviewsPerSession','type': 'FLOAT'}
                                   ],
                     credentials=bigquery_key)
Run Code Online (Sandbox Code Playgroud)

BigQuery 中的架构如下:

Date                STRING      
profileId           STRING  
Opco                STRING  
country             STRING  
deviceType          STRING  
userType            STRING  
users               INTEGER 
sessions            INTEGER 
bounceRate          FLOAT   
sessionsPerUser     FLOAT   
avgSessionDuration  FLOAT …
Run Code Online (Sandbox Code Playgroud)

pandas google-bigquery

10
推荐指数
1
解决办法
4598
查看次数

具有类型提示的 const 方法的 python 等效项

我正在尝试找到与 C++const方法等效的 Python 方法。也就是说,禁止更改其类的任何数据成员的方法。

from typing import Final

age: Final = 2
age += 3               # <----- warn about this -- works!

class Person:
    def __init__(self, age: int) -> None:
        self.age = age
    def happy_birthday(self: Final[Person]) -> None:
        self.age += 1  # <----- warn about this -- how?
Run Code Online (Sandbox Code Playgroud)

我从未见过使用过类型提示self,所以它看起来有点奇怪(并且不起作用)

main.py:4: error: Cannot assign to final name "age"
main.py: note: In member "happy_birthday" of class "Person":
main.py:9: error: Final can be only used as …
Run Code Online (Sandbox Code Playgroud)

python constants type-hinting mypy

10
推荐指数
1
解决办法
2578
查看次数

大多数Pythonic方式打印换行符

如果我需要打印一个换行符,那么编写print语句的Pythonic方法是什么?我正在教Python人,我想第一次就做好.

我发现最有可能的两种方式是:

__PRE__

优点:

  • 更短更简单

缺点:

  • 由于没有提到\n,可能性较差

  • 依赖于最终是一个新行,这可能不是天生就是明显的


__PRE__

优点:

  • 很明显,该声明的意图是什么

缺点:

  • 更长

  • 正在学习的人可能不知道"结束"论证的含义

python io readability newline python-3.x

7
推荐指数
1
解决办法
553
查看次数

现在 __init__.py 是可选的,在包内导入

我正在构建一个包含要运行的脚本的包。它们导入脚本正下方的子文件夹中包含的模块。既然__init__Python 3.3 之后就不需要了,那么正确的文件结构和import语句是什么?我不想指定从最顶层文件夹向下的导入,仅作为相对路径,在这里sub/module

这是文件结构的当前状态:

Root\
    src\
        sub\
            module.py
        script.py
        parent_module.py
    setup.py

# Inside script.py
import sub.module      # Doesn't work
from sub import module # Doesn't work
import src.sub.module  # Does work!

import .sub.module     # Doesn't work
import .parent_module  # Does work!
Run Code Online (Sandbox Code Playgroud)

我想我需要一些 __init__文件,但是那是什么文件,在哪里呢?非常感谢任何帮助,我对包装不太了解。

另外,我当然愿意接受改变结构的建议,如果这能让事情变得更容易的话。

python package python-import python-3.x

7
推荐指数
1
解决办法
1955
查看次数

导入错误:导入错误:无法从“bson.py3compat”导入名称“abc”

我该如何解决这个错误。它会在运行程序时生成。

from bson import ObjectId
class JSONEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, ObjectId):
            return str(o)
        return json.JSONEncoder.default(self, o)
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
1
解决办法
1万
查看次数

如何为 argparse 参数提供类型提示?

我想通过 [PyFlakes, Pylint] 和 mypy 获得正确的 linting 和类型提示。

例如,在下面的代码中,我们无法得到最后一行的类型错误。我们甚至不知道是否float_input存在。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--float_input', type=float)
args = parser.parse_args()


def int_sum(a: int, b: int):
    return a + b

c = int_sum(args.float_input, args.float_input)
Run Code Online (Sandbox Code Playgroud)

有没有什么好的方法可以改善这个问题呢?

python pylint type-hinting mypy python-typing

7
推荐指数
1
解决办法
2775
查看次数