小编Mik*_*son的帖子

在Mac OS X Yosemite上安装pymssql时出错

在OS X Yosemite 10.10.3上安装pymssql时收到以下错误 - 有没有人得到以下错误?我使用FreeTDS(v0.91.112)版本7.1和Python 2.7.6 - tsql实用程序连接到SQL数据库没有问题.

sudo pip install pymssql

错误:

Command "/usr/bin/python -c "import setuptools, tokenize;
__file__='/private/tmp/pip-build-T5Usla/pymssql/setup.py';
exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n',
'\n'), __file__, 'exec'))" install --record /tmp/pip-uZGqK4-record/install-
record.txt --single-version-externally-managed --compile" failed with error
code 1 in /private/tmp/pip-build-T5Usla/pymssql
Run Code Online (Sandbox Code Playgroud)

python pymssql osx-yosemite azure-sql-database

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

Python:如何在软件包级别的帮助菜单中嵌入所有文档字符串帮助?

我的意思是:

  • TLDR: 如何让我的软件包帮助包括所有基础文档字符串?
  • 我已经创建了一个包。该软件包具有所有正确的__init__.py文件和所有正确的文档字符串(模块,函数,类和方法级文档字符串)。但是,当我执行时help(mypackage),提供的唯一帮助是该顶级__init__.py模块提供的帮助。

通常,包级的帮助并不包括所有基础文档字符串的,但有时它

我想确保我嵌入了所有基础文档字符串。


例如,在numpy软件包中,即使未在顶级提供,所有基本文档字符串也可在命令提示符的帮助中找到__init__.py

即我可以输入

>>> help(numpy)
Run Code Online (Sandbox Code Playgroud)

并查看所有文档,包括在dunder init模块外部定义的文档。

但是,许多其他软件包,包括诸如pandas软件包之类的流行软件包,并未捕获所有基础文档。

即输入

>>> help(pandas)
Run Code Online (Sandbox Code Playgroud)

仅向我提供中定义的文档__init__.py

我想创建镜像的软件包级文档numpy


我试着numpy浏览一下它是如何执行此魔术的,没有运气。我已经执行过Google搜索,但似乎无法用短语表达此问题并获得任何正当的链接。

python numpy docstring package code-documentation

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

python"re"包,带有"raw"字符串的奇怪现象

我看到以下现象,似乎无法弄清楚,并没有通过档案搜索找到任何东西:

如果我输入:

>>> if re.search(r'\n',r'this\nis\nit'):<br>
...     print 'found it!'<br>
... else:<br>
...     print "didn't find it"<br>
... 
Run Code Online (Sandbox Code Playgroud)

我会得到:

didn't find it!
Run Code Online (Sandbox Code Playgroud)

但是,如果我输入:

>>> if re.search(r'\\n',r'this\nis\nit'):<br>
...     print 'found it!'<br>
... else:<br>
...     print "didn't find it"<br>
... 
Run Code Online (Sandbox Code Playgroud)

然后我会得到:

found it!
Run Code Online (Sandbox Code Playgroud)

(第一个在r'\n'上只有一个反斜杠,而第二个在r'\\n'上连续有两个反斜杠......即使这个解释器正在删除其中一个.)

我可以猜到正在进行,但我不明白为什么会发生这种情况的官方机制:在第一种情况下,我需要逃避两件事:正则表达式和特殊字符串."Raw"让我逃避特殊字符串,但不是正则表达式.

但是第二个字符串中永远不会有正则表达式,因为它是匹配的字符串.所以只需要逃脱一次.

但是,某些东西对我来说似乎并不一致:我怎么能确保在第一种情况下字面上的字符确实是真的?我可以输入rr''吗?或者我必须确保我逃避两次?在类似的情况下,我如何确保变量是按字面意思(或不是字面意义)?例如,如果我有一个变量tmp ='this \nis \nmy \nhome',我真的想找到斜杠和'n'的文字组合,而不是换行符怎么办?

谢谢!
麦克风

python regex

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

Python标头 - $(美元符号)封装的目的是什么?

提前道歉,这是我真正想到的,我可以在网上找到,但我遇到了麻烦.

在Python中,在标题部分,我看到有时人们会用美元符号($)包装他们的文字.从示例来看,似乎这是一个指向填充自动更新信息的指针(可能是通过源代码控制?),但我不明白它是如何工作的.

例如:

__version__ = '$Revision: 4799 $'.split()[1]
__date__ = '$Date: 2006-09-25 11:09:02 -0400 (Mon, 25 Sep 2006) $'.split()[1]
__author__ = 'John Doe FIX: put in the authors name'
Run Code Online (Sandbox Code Playgroud)

是我在(Python示例文档模板 )中找到的 示例.所以$围绕着版本(随着时间的推移而改变)和日期(也会改变).假设它是某种指针,总是捕获有关版本,日期等的最新信息,有人可以指出我这是如何工作的吗?哪个源代码控制软件使用这种语法?跨语言是否相同?

谢谢!

python code-documentation

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

PySpark 将模型预测与未转换的数据对齐:最佳实践

使用 PySpark 的 ML 模块,经常会发生以下步骤(在数据清理之后等):

  1. 执行特征和目标转换管道
  2. 创建模型
  3. 从模型生成预测
  4. 将预测和原始数据集合并在一起,供业务用户和模型验证之用

摘取一段精简的代码片段:

predictions = model.transform(test_df)
Run Code Online (Sandbox Code Playgroud)

predictions数据帧将仅具有预测(以及概率,可能还有预测的转换)。但它不会包含原始数据集。

如何将预测与原始 PySpark DataFrame 结合起来?

对我来说,如何将原始数据集(甚至转换后的数据集test_df)和预测结合起来并不明显;没有可供连接的共享列,并且对于大型数据集添加索引列似乎相当棘手

目前的解决方案:

对于大型数据集,比如我正在使用的数据集,我尝试了这里的建议

test_df = test_df.repartition(predictions.rdd.getNumPartitions())
joined_schema = StructType(test_df.schema.fields + predictions.schema.fields)
interim_rdd = test_df.rdd.zip(predictions.rdd).map(lambda x: x[0] + x[1])
full_data = spark.createDataFrame(interim_rdd, joined_schema)
full_data.write.parquet(my_predictions_path, mode="overwrite")

Run Code Online (Sandbox Code Playgroud)

但我不喜欢这个有两个原因:

  1. 我不完全确定秩序是否得到维持。该链接表明应该是这样,但我不明白为什么。
  2. 即使我强制重新分区(如上所示),它有时也会崩溃,当我尝试通过上面的最后一行写入数据时,会出现以下错误:

Caused by: org.apache.spark.SparkException: Can only zip RDDs with same number of elements in each partition


我不想使用monotonically_increasing_id有时给出的建议,因为我的数据集太大而不允许这样做。


这似乎很重要:我如何在无法将预测与原始目标进行比较的情况下报告任何模型质量。其他人是怎么做到这一点的??

python apache-spark apache-spark-sql pyspark

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

Docker Compose 容器中的 Python 请求

问题

  • 我有一个 2 容器docker-compose.yml文件。
  • 其中一个容器是一个小型FastAPI应用程序。
  • 另一个只是尝试使用 Python 的requests包来访问 API 。

我可以使用与尝试命中它的 Python 包中的代码完全相同的代码从外部访问应用程序容器,并且它可以工作,但它在包中不起作用。

docker-compose.yml

version: "3.8"
services:
  read-api:
    build:
      context: ./read-api
    depends_on:
      - "toy-api"
    networks:
      - ds-net
  toy-api:
    build:
      context: ./api
    networks:
      - ds-net
    ports:
      - "80:80"
networks:
  ds-net:
Run Code Online (Sandbox Code Playgroud)

相关requests代码

from requests import Session

def post_to_api(session, raw_input, path):
    print(f"The script is sending: {raw_input}")
    print(f"The script is sending it to: {path}")
    response = session.post(path, json={"payload": raw_input})
    print(f"The script received: {response.text}")

def get_from_api(session, …
Run Code Online (Sandbox Code Playgroud)

python python-requests docker docker-compose

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

Spark:从没有 _SUCCESS 文件的文件夹中读取时生成错误

我似乎找不到任何文档,但我想了解如何执行以下操作:

  • 我们有 Spark 管道,以标准格式将数据写入 S3,在其中写入多个文件part-...并将_SUCCESS文件写入文件夹。
  • 然后,我们有更多的 Spark 管道从这些 S3 存储桶中读取数据。
  • 如果管道尝试从没有该文件的文件夹中读取数据,我们希望管道自动抛出异常(失败)_SUCCESS
  • 我们可以创建某种用户创建的函数来管理此测试,但它似乎很常见,因此我认为如果找不到文件,必须有一种简单的 Spark 本机方法来生成此异常。

Spark 是否有这样的原生方法来触发该异常?

exception apache-spark

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

Python子进程:为什么参数列表不能与完整的shell字符串类似?

在此先感谢您的帮助.我是python的新手,但对脚本来说并不是特别新手.我正在尝试运行一个简单的自动化电子邮件程序,但电子邮件模块似乎在我们的系统上安装不正确(我没有在python示例中描述的75%的函数,只有"message_from_string"和"message_from_file")并且smtplib对于我需要的东西过于复杂.

事实上,在简单的bash术语中,我只需要:

/bin/email -s "blah" "recipients" < file.with.body.info.txt
Run Code Online (Sandbox Code Playgroud)

要么,

echo "my body details" | /bin/email -s "blah" "recipients"
Run Code Online (Sandbox Code Playgroud)

这样我就可以避免只是为了发送消息而写入文件.

我尝试使用子进程,无论是调用还是Popen,并且我最终能够使用的唯一方法是使用:

subprocess.call('/bin/mail -s "blah" "recipients" < file.with.body.info.txt', shell=True)
Run Code Online (Sandbox Code Playgroud)

我特别不喜欢这个方法的一些事情:

(1)我无法将事物分解为列表或元组,因为它应该起作用,因此我失去了子进程的全部优势,正如我所理解的那样,以保证事物的安全.如果我试过:

subprocess.call(['/bin/mail', '-s', subjVariable, recipVariable, '<', 'file.with.body.info.txt'], shell=True)
Run Code Online (Sandbox Code Playgroud)

它会失败.同样,如果我尝试使用管道"|"而不是从文件中读取,它将失败.如果我使用'-cmd'而不是管道,它也失败了."失败"通常是它会读取'<'和'file.with.body.info.txt',好像它们是进一步的收件人一样.换句话说,无论我是否说"shell = True",子进程都无法将调用中的特殊字符解释为它们的特殊字符.'<'未被识别为来自文件等的输入,除非我将所有内容保存在一个大调用中.

我理想的是能够做什么,因为它似乎更安全,更灵活,是这样的:

subprocess.call(['/bin/echo', varWithBody, '|', '/bin/mail', '-s', subjVariable, recipVariable,])
Run Code Online (Sandbox Code Playgroud)

但似乎管道根本没有用子进程理解,我无法弄清楚如何在python后面将事物一起管道.

有什么建议?除了试图解释如何使用'email'或'smtplib'模块之外,欢迎所有帮助.无论这个特定的应用程序,我真的想学习如何更好地使用子进程,以便我可以将不同的程序联系在一起.我的理解是python应该相当不错.

谢谢!麦克风

python subprocess

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

Git没有使用.gitignore的内容

我正在使用Rails并将目录tmp和Gemfile添加到我的.gitignore.但每次我改变它,git status告诉我,它改变了.在两台机器上.在我的开发人员计算机和服务器上.有点烦人.

内容.gitignore:

.DS_Store
data/export/*.csv
tmp/*
*.rbc
*.sassc
.sass-cache
capybara-*.html
.rspec
/.bundle 
/vendor/bundle 
/log/* 
/tmp/* 
/db/*.sqlite3 
/public/system/* 
/coverage/ 
/spec/tmp/* 
**.orig 
config/*.yml 
rerun.txt 
pickle-email-*.html 
Gemfile*
Run Code Online (Sandbox Code Playgroud)

git gitignore ruby-on-rails-3

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

在Python的Seaborn中,有没有办法做与“despine”相反的事情?

seaborn是一个漂亮的 Python 包,它在很大程度上充当matplotlib. 然而,它改变了,例如,matplotlib绘图对象上的方法来指导seaborn函数。


seaborn从绘图中删除任何脊柱(绘图的外边缘)despine() 但我不能反其道而行之。

matplotlib如果我从一开始就完全使用的话,我似乎无法以标准方式重新创建脊柱。有没有办法做到这一点?我会怎样?


下面是一个例子。例如,我可以在图的底部和左侧添加书脊吗?

from sklearn import datasets
import pandas as pd

tmp = datasets.load_iris()
iris = pd.DataFrame(tmp.data, columns=tmp.feature_names)
iris['species'] = tmp.target_names[tmp.target]
iris.species =  iris.species.astype('category') 

import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style('darkgrid')
sns.boxplot(x='species', y='sepal length (cm)', data=iris_new)
plt.show()
Run Code Online (Sandbox Code Playgroud)

关联箱线图

python matplotlib seaborn

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