遇到来自PyMC3-Python 3.8.5的奇怪错误消息

遇到来自PyMC3-Python 3.8.5的奇怪错误消息,python,pycharm,theano,bayesian,pymc3,Python,Pycharm,Theano,Bayesian,Pymc3,我最近将IDE从Spyder改为PyCharm,因为我觉得Spyder在Anaconda中的使用有些臃肿。下面的代码在Spyder中或多或少运行良好,但我在PyCharm中遇到了问题。代码一直平稳运行,直到数据帧被放入模型(1.1)中。观察与文件相关的元数据(?),它应该适合分析 我看过的所有其他地方都在处理文件导入的错误格式。就我所见,我的情况并非如此,因为数据fram在建模之前工作良好 我为解决isse所做的事情: 将样本量从100K减少到50K,从10K减少到1K 已使用实际目录更改项目

我最近将IDE从Spyder改为PyCharm,因为我觉得Spyder在Anaconda中的使用有些臃肿。下面的代码在Spyder中或多或少运行良好,但我在PyCharm中遇到了问题。代码一直平稳运行,直到数据帧被放入模型(1.1)中。观察与文件相关的元数据(?),它应该适合分析

我看过的所有其他地方都在处理文件导入的错误格式。就我所见,我的情况并非如此,因为数据fram在建模之前工作良好

我为解决isse所做的事情:

  • 将样本量从100K减少到50K,从10K减少到1K
  • 已使用实际目录更改项目目录
  • 我通过conda contra pip重新安装了以下依赖项:numpy、PyMC3、Theano
  • 我将虚拟机增加到100GB
  • 已安装用于处理的新GPU驱动程序
  • 我添加了预处理,认为这可能与此有关
运行模型时,我不断遇到的错误是:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\Greencom\miniconda3\lib\multiprocessing\spawn.py", line 116, in spawn_main
    exitcode = _main(fd, parent_sentinel)
  File "C:\Users\Greencom\miniconda3\lib\multiprocessing\spawn.py", line 125, in _main
    prepare(preparation_data)
  File "C:\Users\Greencom\miniconda3\lib\multiprocessing\spawn.py", line 236, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "C:\Users\Greencom\miniconda3\lib\multiprocessing\spawn.py", line 287, in _fixup_main_from_path
    main_content = runpy.run_path(main_path,
  File "C:\Users\Greencom\miniconda3\lib\runpy.py", line 264, in run_path
    code, fname = _get_code_from_file(run_name, path_name)
  File "C:\Users\Greencom\miniconda3\lib\runpy.py", line 234, in _get_code_from_file
    with io.open_code(decoded_path) as f:
OSError: [Errno 22] Invalid argument: 'C:\\Users\\Greencom\\OneDrive\\Dokumenter\\Trading\\Quant\\Python Analysis\\<input>'

我决定尝试一下您的问题,但您的代码似乎有几个问题与错误没有多大关系,而如果我遵循以下步骤,错误不会出现:

  • 创建一个只有main.py的新空项目,为它设置一个新的Python 3.8虚拟环境
  • 将代码复制到
    main.py
    ,只删除所有未使用的导入和重新格式化
  • 使用一些任意数据创建一个新的
    test.xlsx
    ,更改代码中的文件引用
  • 安装以下要求:
现在,您可以运行代码,它将愉快地继续读取文件。当然,代码中存在一些问题使其无法工作:

  • EU50p1d.min()
    转换为整数将不起作用
  • Uniform()
另外,我不知道你的.xlsx中有什么数据,所以当然可能还有其他问题没有出现。但我怀疑这些会导致你所描述的问题

您的问题很可能是从没有设置适当的虚拟环境开始的。假设您使用最新的Python,并且只使用一些示例路径,您可以根据需要更改这些路径

确保您位于命令行上的
python
实际执行您想要虚拟环境的python版本的位置,或直接参考该
python.exe

python -m venv "c:\my_venv\folder"
"c:\my_venv\folder\Scripts\activate"
pip install arviz
pip install pymc3
pip install xlrd

如果您使用的是PyCharm,您可以让PyCharm为您执行此操作,只需确保在创建新环境之前选择适当的基本Python解释器即可。如果按照说明手动执行,则需要在解释器的项目设置中告诉PyCharm使用刚刚为正在处理的项目创建的环境。

尽管这不重要,我在您的代码中看到了1个
/
和大量转义的
\\
,但是错误消息中包含了所有
\\
,并且您出于某种原因从中删除了实际的文件名,并将其替换为
,即使文件名仍在代码中。你能分享一下实际的代码和完整的错误信息吗?该文件是否确实存在于该位置?您是否尝试过简单地从一个测试脚本中打开同一个文件,该脚本只打开了
('u file\u name','r')
,以查看这是一个简单的IO问题还是权限问题?我更改了一个
/
,结果没有改变。此外,我找不到您提到的转义
\\
。但是是的,整个错误将被添加到OP中。您在上面看到的是整个代码。我尝试了open()并得到了以下结果:
看起来问题出在您的conda环境中-错误消息表明问题发生在执行
spawn.py中的
\u main()
调用期间。它最后(错误消息的底线)试图打开
.xlsx
文件,就像打开python文件一样(使用
.open\u code()
)。不清楚它为什么会这样做,但我建议只为您的项目创建一个新的虚拟环境,只安装所需的包,看看您的代码是否正常。对“escape\\”的混淆表示歉意,我的意思是双反斜杠(即转义反斜杠)。没问题,我还在学习python的术语。:)但没错,所以我卸载并重新安装了conda等,完全从头开始,只安装项目所需的依赖项。但是错误仍然会弹出,与以前一样。我觉得这非常奇怪。但是,我想指出,你的建议是非常受欢迎的。我已经按照你的建议做了,我真是目瞪口呆。我已经创建了x数量的新环境,并按照您建议的x数量重新运行代码,但每次都会出现错误。只有这一次,根据项目位置,错误才会有一个新目录<代码>C:\\Users\\Greencom\\PycharmProjects\\pythonProject1\\
这可能与运行Python 3.8.5有关吗?该版本的Python应该可以,而我怀疑您的虚拟环境所基于的特定发行版。我建议下载并安装一个干净的Python副本。您可以在不影响现有副本的情况下安装新副本,因此测试是安全的。使用该版本的Python并按照我描述的操作,您的脚本应该运行良好,除了其中的错误。即使安装了新副本,我仍然有问题。然后我决定把一切都打扫干净。删除了Python 3.8.5、PyCharm和Miniconda。然后我又安装了一次。错误仍然存在。也许PyCharm只是个狗屎,我必须回到我的Spyder(尽管我不愿意)。PyCharm绝对不是“狗屎”
python -m venv "c:\my_venv\folder"
"c:\my_venv\folder\Scripts\activate"
pip install arviz
pip install pymc3
pip install xlrd