首页 > 解决方案 > 如何将 .py 文件上传到 Linux 服务器而不会出错

问题描述

我有一个网站,用户通过 HTML 表单输入信息,而 PhP 是处理表单的服务器端脚本。但是,PhP 将该信息传递给服务器上的各种 .py 文件,然后 .py 文件分析信息并将结果返回给 PhP,然后将结果显示给用户。

我使用 PyCharm 作为我的本地测试环境来起草和测试 .py 文件,然后再将它们部署到站点。我遇到的问题与将 .py 文件传输到服务器有关。

选项 1:如果我只是将 .py 文件从本地计算机上传到远程 Linux 服务器并添加适当的 shebang 行以引用我服务器上的相关 python venv,它们将永远无法工作。即使我注释掉文件中的所有内容并起草一些基本的 2 行程序来测试它,它也不起作用。

选项 2:相反,如果我在服务器上创建新的空白 .py 文件,然后将本地计算机上文件中的代码剪切并粘贴到这些空白 .py 文件中(并添加相关的 shebang 以引用我的 venv),瞧,它有效。在这种情况下,我小心翼翼地在第一个字符之后开始剪切并在最后一个字符之前结束。然后我只是在粘贴后修复它。我这样做是为了避免复制任何我在 PyCharm IDE 中无法“看到”的隐藏代码/标签。

这让我觉得 PyCharm 嵌入的某种隐藏代码/标签在 IDE 本身中并不明显?真的吗?我已经阅读了有关将软件部署到远程服务器的 PyCharm 文档,但是当我只需要将一两个文件上传到我的服务器时,所描述的过程对我来说似乎过于复杂。此外,文档中没有任何内容表明您必须遵循该过程,否则您的 .py 文件将无法在其他机器上运行。

有谁知道:(a) 为什么不能简单地将 .py 文件直接上传到 Linux 服务器;(b) 如果在 PyCharm 中有一个简单的选项可供选择,这样我就可以避免这个问题?

标签: python-3.xlinuxpycharm

解决方案


Windows 和 Linux 使用不同的字符来表示新行。Windows 使用 CRLF(回车,换行),而 Linux 使用 LF。这意味着如果您将任何文本文件从 Windows 复制到 Linux,它可能无法正常工作(反之亦然)。您的 python 文件无法正常工作,因为它们是在 Windows 上创建的并且使用了错误的换行符。

为了解决这个问题,Linux 中有多种命令行工具可以将所有 CRLF 字符转换为 LF。这里有些例子:

  1. 如何在 Bash 脚本中将 DOS/Windows 换行符 (CRLF) 转换为 Unix 换行符 (LF)?
  2. 转换行尾
  3. https://askubuntu.com/questions/803162/how-to-change-windows-line-ending-to-unix-version

推荐阅读