我在 Pycharm 中设置了一个项目,具有现有的 conda 环境。我的脚本在控制台内运行时可以工作。
我希望能够python -m path_to_my_script/script.py从任何位置运行,但我需要激活 conda。Conda 建议我这样做conda init,但我担心它可能会改变某个地方的设置并破坏东西。
有什么conda init作用?
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) 我正在测试多队列。我的测试涉及一个带有 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) 我正在尝试从谷歌搜索结果中提取链接.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&source=web&rct=j&url=https://en.wikipedia.org/wiki/Chocolate&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"似乎令人困惑.有任何想法吗?
当我在容器内时,会发生以下情况:
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) 我正在尝试以 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) 我正在尝试将 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)
我该如何让它发挥作用?
我想在循环中填充基本字符串,以访问其名称中日历天数增加的文件。这是简化版本:
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)为什么会这样?
谢谢。