当一个项目仅通过via pyproject.toml(即没有文件)指定时setup.{py,cfg},如何以可编辑模式通过via pip(即python -m pip install -e .)安装它?
我尝试了setuptools和poetry构建系统,但都不起作用:
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
Run Code Online (Sandbox Code Playgroud)
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Run Code Online (Sandbox Code Playgroud)
我在两个构建系统上都遇到相同的错误:
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
Run Code Online (Sandbox Code Playgroud)
我在conda环境中使用它,以下是我的setuptools和版本pip:
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Run Code Online (Sandbox Code Playgroud) 我正在偷看使用card-deck和card类的一个Bootstrap示例(定价示例).我想知道如果其中一个列表的项目少于其他列表,那么如何修复按钮对齐.
我希望所有按钮都垂直对齐(在每张卡的底部),但我无法找到一种方法.我尝试设置.align-bottom类以及将按钮包装进去<div class="align-text-bottom">.我也从这个问题中尝试了几个关于添加空间的建议,但是仍然没有成功(间距也应该是可变的,以便它填满列表中的剩余空间).
包装<div class="card-footer bg-white">不会产生预期的结果,因为它没有对齐卡底部的按钮,并且在它周围创建了某种边框.
有没有人有想法?
编辑:这是一个类似于问题的jsfiddle.
我需要从webservice调用一个方法,所以我写了这段代码:
private string urlPath = "http://xxx.xxx.xxx/manager/";
string request = urlPath + "index.php/org/get_org_form";
WebRequest webRequest = WebRequest.Create(request);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.
webRequest.ContentLength = 0;
WebResponse webResponse = webRequest.GetResponse();
Run Code Online (Sandbox Code Playgroud)
但是这种方法需要一些参数,如下所示:
发布数据:
_username:'API USER', // api authentication username
_password:'API PASSWORD', // api authentication password
Run Code Online (Sandbox Code Playgroud)
如何将这些参数添加到此Webrequest中?
提前致谢.
我尝试使用PyInstaller在Windows 7下编译Python项目.该项目工作正常,没有问题,但是当我尝试编译它时,结果不起作用.虽然在编译期间我没有收到任何警告warnmain.txt,但build目录中的文件中有许多警告:warnmain.txt
我真的不明白那些警告,例如"没有名为numpy.pi的模块",因为numpy.pi它不是模块而是数字.我从未尝试过导入numpy.pi.我做进口numpy和matplotlib明确.另外我正在使用PyQt4.我认为错误可能与这些库有关.
但是我能够编译一个成功使用numpy的简单脚本:
import sys
from PyQt4 import QtGui, QtCore
import numpy as np
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.pb = QtGui.QPushButton(str(np.pi), self)
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
这里成功意味着创建的可执行文件实际上显示了所需的输出.但是,还会warnmain.txt创建一个文件,其中包含与之前完全相同的"警告".因此,我认为编译我的实际项目没有取得任何成功的事实不是(或至少不仅仅)与这些警告相关.但那么还有什么可能是错误呢?编译期间唯一的输出是'INFO',并且没有一个是否定的声明.
我没有指定一个额外的钩子目录,但钩子使用默认目录向下,只要我可以从编译输出读取,例如hook-matplotlib执行.我看不到任何钩子,numpy因为我的小例子脚本也没有,但这个有用.我在我的文件中使用了以下导入(不是全部在同一个但在不同的文件中):
import numpy as np
import matplotlib.pyplot as ppl
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
from PyQt4 import QtGui, QtCore
import json …Run Code Online (Sandbox Code Playgroud) 我遇到了在包的模块中导入__init__.py和使用import as绝对导入的问题.
我的项目有一个子包,在其中__init__.py我将一个类从一个模块"提升"到带有from import as语句的子包级别.该模块使用绝对导入从该子包导入其他模块.我收到这个错误AttributeError: 'module' object has no attribute 'subpkg'.
结构:
pkg/
??? __init__.py
??? subpkg
? ??? __init__.py
? ??? one.py
? ??? two_longname.py
??? tst.py
Run Code Online (Sandbox Code Playgroud)
pkg/__ init__.py为空.
pkg/subpkg/__ init__.py:
from pkg.subpkg.one import One
Run Code Online (Sandbox Code Playgroud)
pkg/subpkg/one.py:
import pkg.subpkg.two_longname as two
class One(two.Two):
pass
Run Code Online (Sandbox Code Playgroud)
pkg/subpkg/two_longname.py:
class Two:
pass
Run Code Online (Sandbox Code Playgroud)
pkg/tst.py:
from pkg.subpkg import One
print(One)
Run Code Online (Sandbox Code Playgroud)
输出:
$ python3.4 -m pkg.tst
Traceback (most recent …Run Code Online (Sandbox Code Playgroud) 我正在寻找某种"多米诺排序"算法,该算法根据后续项目的"切线"边的相似性对双面项目列表进行排序.
假设以下列表中的项目由2元组表示:
>>> items
[(0.72, 0.12),
(0.11, 0.67),
(0.74, 0.65),
(0.32, 0.52),
(0.82, 0.43),
(0.94, 0.64),
(0.39, 0.95),
(0.01, 0.72),
(0.49, 0.41),
(0.27, 0.60)]
Run Code Online (Sandbox Code Playgroud)
目标是对该列表进行排序,使得每两个后续项目(损失)的切线末端的平方差的总和最小:
>>> loss = sum(
... (items[i][1] - items[i+1][0])**2
... for i in range(len(items)-1)
... )
Run Code Online (Sandbox Code Playgroud)
对于上面的示例,这可以通过仅处理所有可能的排列来计算,但是对于具有更多项的列表,这变得很快变得不可行(O(n!)).
如下所示,逐步选择最佳匹配的方法
def compute_loss(items):
return sum((items[i][1] - items[i+1][0])**2 for i in range(len(items)-1))
def domino_sort(items):
best_attempt = items
best_score = compute_loss(best_attempt)
for i in range(len(items)):
copy = [x for x in items]
attempt = [copy.pop(i)]
for j in range(len(copy)): …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 pytorch 中创建一个多层神经网络类。我想知道以下两段代码是否创建了相同的网络。
模型 1 与 nn.Linear
class TestModel(nn.Module):
def __init__(self, input_dim, hidden_dim, output_dim):
super(TestModel, self).__init__()
self.fc1 = nn.Linear(input_dim,hidden_dim)
self.fc2 = nn.Linear(hidden_dim,output_dim)
def forward(self, x):
x = nn.functional.relu(self.fc1(x))
x = nn.functional.softmax(self.fc2(x))
return x
Run Code Online (Sandbox Code Playgroud)
模型 2 与 nn.Sequential
class TestModel2(nn.Module):
def __init__(self, input, hidden, output):
super(TestModel2, self).__init__()
self.seq = nn.Sequential(
nn.Linear(input_dim,hidden_dim),
nn.ReLU(),
nn.Linear(hidden_dim,output_dim),
nn.Softmax()
)
def forward(self, x):
return self.seq(x)
Run Code Online (Sandbox Code Playgroud) 我正在使用本教程关于autoencoders:https://blog.keras.io/building-autoencoders-in-keras.html
所有代码都正常工作,但是当我为正则化参数设置10e-5时性能非常糟糕(结果很模糊),这是教程代码中定义的参数.实际上,我需要将正则化减少到10e-8以获得正确的输出.
我的问题如下:为什么结果与教程有如此不同?数据是相同的,参数是相同的,我没想到会有很大的差异.
我怀疑从2016年5月14日起Keras功能的默认行为已经改变(在所有情况下都执行自动批量标准化?).
输出:
用10e-5正则化(模糊); 50个时期后val_loss为0.2967,100个时期后为0.2774
使用10e-8正则化:50个历元后的val_loss为0.1080,100个历元后为0.1009.
没有正则化:50个时期后val_loss为0.1018,100个时期后为0.0944.
完整代码(供参考):
# Source: https://blog.keras.io/building-autoencoders-in-keras.html
import numpy as np
np.random.seed(2713)
from keras.layers import Input, Dense
from keras.models import Model
from keras import regularizers
encoding_dim = 32
input_img = Input(shape=(784,))
# add a Dense layer with a L1 activity regularizer
encoded = Dense(encoding_dim, activation='relu',
activity_regularizer=regularizers.l1(10e-5))(input_img)
decoded = Dense(784, activation='sigmoid')(encoded)
autoencoder = Model(input_img, decoded)
# this model maps an input to its encoded representation
encoder = Model(input_img, encoded)
# create …Run Code Online (Sandbox Code Playgroud) 我有一个带有多索引的数据框,其中一个级别的值代表该级别的所有其他值。例如(下面的代码示例):
D
A B C
x a y 0
b y 1
all z 2
Run Code Online (Sandbox Code Playgroud)
这all是表示该级别的所有其他值的简写,以便数据框实际表示:
D
A B C
x a y 0
b y 1
a z 2
b z 2
Run Code Online (Sandbox Code Playgroud)
这也是我想获得的形式。对于包含all在该索引级别中的每一行,该行针对索引级别中的每个其他值进行复制。如果它是一列,我可以用all其他值的列表替换每次出现的,然后使用DataFrame.explode.
因此,我考虑重置该索引级别,用all其他值列表替换所有出现的,然后explode将该列替换为索引:
level_values = sorted(set(df.index.unique('B')) - {'all'})
tmp = df.reset_index('B')
mask = df.index.get_level_values('B') == 'all'
col_index = list(tmp.columns).index('B')
for i in np.argwhere(mask).ravel():
tmp.iat[i, col_index] = level_values
result = tmp.explode('B').set_index('B', append=True)
Run Code Online (Sandbox Code Playgroud)
然而,这似乎效率很低,代码也不是很清楚。此外,索引级别现在的顺序错误(我的实际数据框有三个以上的索引级别,因此我无法对其swaplevel进行重新排序)。
所以我想知道是否有更简洁的方法来分解这些all …
python ×8
.net ×1
algorithm ×1
autoencoder ×1
bootstrap-4 ×1
c# ×1
css ×1
html ×1
keras ×1
matplotlib ×1
numpy ×1
pandas ×1
pip ×1
pyinstaller ×1
pyqt4 ×1
python-3.9 ×1
python-3.x ×1
pytorch ×1
regularized ×1
setuptools ×1
sorting ×1
web-services ×1