小编Gla*_*ery的帖子

conda init污染环境?

我在 Pycharm 中设置了一个项目,具有现有的 conda 环境。我的脚本在控制台内运行时可以工作。

我希望能够python -m path_to_my_script/script.py从任何位置运行,但我需要激活 conda。Conda 建议我这样做conda init,但我担心它可能会改变某个地方的设置并破坏东西。

有什么conda init作用?

python conda

9
推荐指数
1
解决办法
7618
查看次数

使用attrs的子类上的Pycharm typehint

Pycharm抱怨MyClass实例的意外参数.有没有解决的办法?

import attr

@attr.s
class _Super:
    """ My Super class"""
    x: str = attr.ib(validator=attr.validators.instance_of(str))

@attr.s
class MyClass(_Super):
    """ My Sub class"""
    y:str = attr.ib(validator=attr.validators.instance_of(str))

x = MyClass(x="a", y="b")  # (x variable) Pycharm Typehint: "Unexpected argument"
Run Code Online (Sandbox Code Playgroud)

pycharm python-attrs

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

Pytest + 多处理队列不能很好地协同工作

我正在测试多队列。我的测试涉及一个带有 getter 和 setter 的简单类,围绕多队列。

当我重新运行 i 时,我的测试在通过和失败之间交替[编辑:当使用 block=False 时会发生这种情况。按照建议将其设置为 True 会挂起程序]。

我如何重写这个以便

(1) 清除程序执行之间的多队列以及 (2) 在 .get() 方法中读取队列中的所有值?

import multiprocessing
import queue

class MyClass:
    def __init__(self):
        self.q = multiprocessing.Queue()
        self.results = []

    def put(self, x):
        self.q.put(x)

    def get(self):
        while True:
            try:
                self.results.append(self.q.get(block=True))
            except queue.Empty:
                break
        return self.results

    @pytest.fixture
    def wrapped_queue():
        yield MyClass()

    def test_multiprocessing_queue(wrapped_queue):
        wrapped_queue.put("a")
        wrapped_queue.put("b")
        result = wrapped_queue.get()
        assert result == ["a", "b"]
Run Code Online (Sandbox Code Playgroud)

python queue pytest python-multiprocessing

5
推荐指数
1
解决办法
7103
查看次数

从<a>美丽的汤中提取href

我正在尝试从谷歌搜索结果中提取链接.Inspect元素告诉我,我感兴趣的部分有"class = r".第一个结果如下:

<h3 class="r" original_target="https://en.wikipedia.org/wiki/chocolate" style="display: inline-block;">
    <a href="https://en.wikipedia.org/wiki/Chocolate" 
       ping="/url?sa=t&amp;source=web&amp;rct=j&amp;url=https://en.wikipedia.org/wiki/Chocolate&amp;ved=0ahUKEwjW6tTC8LXZAhXDjpQKHSXSClIQFgheMAM" 
       saprocessedanchor="true">
        Chocolate - Wikipedia
    </a>
</h3>
Run Code Online (Sandbox Code Playgroud)

要提取"href"我做:

import bs4, requests
res = requests.get('https://www.google.com/search?q=chocolate')
googleSoup = bs4.BeautifulSoup(res.text, "html.parser")
elements= googleSoup.select(".r a")
elements[0].get("href")
Run Code Online (Sandbox Code Playgroud)

但我意外得到:

'/url?q=https://en.wikipedia.org/wiki/Chocolate&sa=U&ved=0ahUKEwjHjrmc_7XZAhUME5QKHSOCAW8QFggWMAA&usg=AOvVaw03f1l4EU9fYd'
Run Code Online (Sandbox Code Playgroud)

我想要的地方:

"https://en.wikipedia.org/wiki/Chocolate"

属性"ping"似乎令人困惑.有任何想法吗?

python beautifulsoup

4
推荐指数
1
解决办法
4129
查看次数

Shell 命令不会在 Docker 构建中运行

当我在容器内时,会发生以下情况:

pip uninstall -y -r <(pip freeze)

然而,当我尝试在 Dockerfile 中执行相同操作时,如下所示:

RUN pip uninstall -y -r <(pip freeze)

我得到:

------
 > [ 7/10] RUN pip uninstall -y -r <(pip freeze):
#11 0.182 /bin/sh: 1: Syntax error: "(" unexpected
------
executor failed running [/bin/sh -c pip uninstall -y -r <(pip freeze)]: exit code: 2
Run Code Online (Sandbox Code Playgroud)

我如何重写这个命令才能让它满意?

编辑:

我正在使用这个解决方法。然而仍然对一句话答案感兴趣

RUN pip freeze > to_delete.txt
RUN pip uninstall -y -r to_delete.txt
Run Code Online (Sandbox Code Playgroud)

linux bash docker

3
推荐指数
1
解决办法
1565
查看次数

如何在 Numba 中创建类型化字典,其中 (key, value) = (str, list)

我正在尝试以 nopython 模式创建字典。这就是我所拥有的:

import numba

@numba.njit()
def func():

    d = numba.typed.Dict.empty(
        key_type=numba.types.unicode_type,
        value_type=numba.ListType(np.float64)
    )

    d["a"] = [1, 1]

    return d

print(func())
Run Code Online (Sandbox Code Playgroud)

错误:

Invalid use of Function(<class 'numba.types.containers.ListType'>) with argument(s) of type(s): (Function(<class 'float'>))
 * parameterized
In definition 0:
    TypeError: typer() takes 0 positional arguments but 1 was given
Run Code Online (Sandbox Code Playgroud)

numba

2
推荐指数
1
解决办法
1445
查看次数

如何将 numpy 数组附加到 pandas 数据框

我正在尝试将 3x2 numpy 数组附加到现有数据帧。像这样的东西:

import pandas as pd
import numpy as np
df = pd.Dataframe({"A": [0,0,0], "B": [1,1,1]})
arr = np.arange(6).reshape(3, 2)

df[["C", "D"]] = arr  # NOPE!
Run Code Online (Sandbox Code Playgroud)

我该如何让它发挥作用?

numpy pandas

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

重新格式化相同的字符串不起作用。我该如何实现?

我想在循环中填充基本字符串,以访问其名称中日历天数增加的文件。这是简化版本:

my_str = "filename_{}_blah.txt"
for n in range(3):
    my_str = my_str.format(n)
    print(my_str)
Run Code Online (Sandbox Code Playgroud)

输出:

filename_0_blah.txt
filename_0_blah.txt
filename_0_blah.txt
Run Code Online (Sandbox Code Playgroud)

我希望人数会增加。

(1)有没有解决的办法,

(2)为什么会这样?

谢谢。

python

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