【问题标题】:Launch Pycharm from command line (terminal)从命令行(终端)启动 Pycharm
【发布时间】:2014-04-03 17:44:59
【问题描述】:

我想试用 PyCharm 来开发 sage 数学。平时我是跑eclipse做sage开发,现在想用PyCharm试试。

要使用 sage 环境变量启动 eclipse,我通常在命令行中执行以下操作:

sage -sh
cd /path/to/eclipse
./eclipse

第一行加载 sage 环境变量,其余的启动 eclipse。我怎样才能为 pyCharm 做同样的事情? (注意,我使用 Mac 和 Ubuntu 进行 sage 开发;上面的命令对两种操作系统都是不可知的)

  1. Link 1 接近我正在寻找的解决方案,但是我在任何地方都找不到 pyCharm.sh。
  2. Link 2:Jetbrains 也没有给出明确的说明。

【问题讨论】:

  • 在 MacOS 中,您可以通过键入“charm”来启动 PyCharm,这与在 Ubuntu 中提到的 Yonathan Simson 的行为相同。
  • JeBrains 没有提供有关如何执行此操作的说明,即使在 2 年后也是如此。这意味着,JB 没有很好地记录使用 PyCharm 运行纯 sudo 脚本(如鼠标钩子)。我一点印象都没有。
  • 有人知道如何在 2019 年的 Windows 上执行此操作吗??

标签: python command-line environment-variables pycharm sage


【解决方案1】:

编辑(2020 年 4 月):似乎启动器脚本的创建现在在 Toolbox 应用程序设置中进行管理。 有关详细信息,请参阅Toolbox App announcement

--

  1. 打开应用程序 Pycharm
  2. 在菜单栏中查找工具
  3. 点击Create Command-line Launcher
  4. 检查已在/usr/local/bin/charm 中创建的启动器可执行文件
  5. 打开项目或文件只需键入$ charm YOUR_FOLDER_OR_FILE

也许这就是你需要的。

【讨论】:

  • 这很棒,因为您还可以打开文件或目录。
  • 事实证明,默认情况下,在 ubuntu 上,您已经拥有此文件 /usr/local/bin/charm。虽然没有你的小费我不可能轻易找到它。谢谢!
  • 注意,OSX 还在安装时创建了charm 二进制文件。太棒了!
  • 这已在 2019.1 EAP 中消失。
  • @episodeyang 你说得对,见blog.jetbrains.com/blog/2018/08/23/toolbox-app-1-11-whats-new。我会相应地改变我的答案。
【解决方案2】:

在IDE里面,可以点进去:

工具/创建命令行启动器...

【讨论】:

  • 正如@Ami Mahloof 的回答中所指出的,在 PyCharm 更新后可能需要重新创建这个启动器(对我来说就是这种情况,PyCharm 会启动但没有打开给定的路径)
【解决方案3】:

你说得对,JetBrains help page 不是很清楚。在 OS X 上,您需要在以下位置使用启动器:

/Applications/PyCharm.app/Contents/MacOS/pycharm

或者,对于社区版:

/Applications/PyCharm\ CE.app/Contents/MacOS/pycharm

不幸的是,向这个二进制文件添加符号链接对我不起作用(启动器会崩溃)。不过,设置别名是可行的。将此添加到您的 .bash_profile(或您使用的任何外壳)中:

alias pycharm="/Applications/PyCharm CE.app/Contents/MacOS/pycharm"

然后,您可以使用简单的pycharm 运行命令。

有了这个,你可以做一些事情,比如打开一个项目:

pycharm ~/repos/my-project

或在项目中打开文件的特定行:

pycharm ~/repos/my-project --line 42 ~/repos/my-project/script.py

或者查看两个文件的差异(它们不需要是项目的一部分):

pycharm ~/some_file.txt ~/Downloads/some_other_file.txt

请注意,我需要将绝对路径传递给这些文件,否则 PyCharm 找不到它们..

【讨论】:

  • 看起来您也可以使用以下命令将目录作为项目打开:/Applications/PyCharm\ CE.app/Contents/MacOS/pycharm /path/to/folder
【解决方案4】:

更新

从 JetBrains Toolbox 自动创建命令行启动器是 now possible。这就是你的做法:

  1. 打开工具箱窗口;
  2. 转到右上角的齿轮图标(工具箱本身的设置窗口);
  3. 开启Generate shell scripts
  4. Shell script location 文本框中填写您希望启动器驻留的位置。您必须手动执行此操作,此时不会自动填充!

在 Mac 上,该位置可能是 /usr/local/bin。对于新手,您可以使用 PATH 变量中的任何路径,或者在 bash 配置文件中为 PATH 变量添加新路径。使用echo $PATH 查看有哪些路径。

注意!它对我来说并没有立即起作用,在生成脚本之前我不得不摆弄一下。您可以转到 IDEA 的变速箱(例如 PyCharm)并查看/更改启动器名称。因此对于 PyCharm,默认名称是 pycharm,但您可以将其更改为您喜欢的任何名称。

原答案

如果你不使用工具箱,你仍然可以使用我原来的答案。

~~由于某种原因,Create Command Line Launcher 在 2019.1 中不再可用。~~ 因为它现在是 JetBrains Toolbox 的一部分

这是您自己创建脚本的方法:

如果您在使用type -a charm 查找脚本之前已经使用了charm 命令。更改文件路径中的 pycharm 版本。请注意,第一个变量RUN_PATH 中的编号是不同的。您必须自己在目录中查找。

RUN_PATH = u'/Users/boatfolder/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6183.50/PyCharm.app'
CONFIG_PATH = u'/Users/boatfolder/Library/Preferences/PyCharm2019.1'
SYSTEM_PATH = u'/Users/boatfolder/Library/Caches/PyCharm2019.1'

如果您之前没有使用过 charm 命令,则必须创建它。

在这样的地方创建魅力文件:/usr/local/bin/charm

然后添加此代码(如上所述将版本号更改为您的版本):

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import socket
import struct
import sys
import os
import time

# see com.intellij.idea.SocketLock for the server side of this interface

RUN_PATH = u'/Users/boatfolder/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6183.50/PyCharm.app'
CONFIG_PATH = u'/Users/boatfolder/Library/Preferences/PyCharm2019.1'
SYSTEM_PATH = u'/Users/boatfolder/Library/Caches/PyCharm2019.1'


def print_usage(cmd):
    print(('Usage:\n' +
           '  {0} -h | -? | --help\n' +
           '  {0} [project_dir]\n' +
           '  {0} [-l|--line line] [project_dir|--temp-project] file[:line]\n' +
           '  {0} diff <left> <right>\n' +
           '  {0} merge <local> <remote> [base] <merged>').format(cmd))


def process_args(argv):
    args = []

    skip_next = False
    for i, arg in enumerate(argv[1:]):
        if arg == '-h' or arg == '-?' or arg == '--help':
            print_usage(argv[0])
            exit(0)
        elif i == 0 and (arg == 'diff' or arg == 'merge' or arg == '--temp-project'):
            args.append(arg)
        elif arg == '-l' or arg == '--line':
            args.append(arg)
            skip_next = True
        elif skip_next:
            args.append(arg)
            skip_next = False
        else:
            path = arg
            if ':' in arg:
                file_path, line_number = arg.rsplit(':', 1)
                if line_number.isdigit():
                    args.append('-l')
                    args.append(line_number)
                    path = file_path
            args.append(os.path.abspath(path))

    return args


def try_activate_instance(args):
    port_path = os.path.join(CONFIG_PATH, 'port')
    token_path = os.path.join(SYSTEM_PATH, 'token')
    if not (os.path.exists(port_path) and os.path.exists(token_path)):
        return False

    try:
        with open(port_path) as pf:
            port = int(pf.read())
        with open(token_path) as tf:
            token = tf.read()
    except (ValueError):
        return False

    s = socket.socket()
    s.settimeout(0.3)
    try:
        s.connect(('127.0.0.1', port))
    except (socket.error, IOError):
        return False

    found = False
    while True:
        try:
            path_len = struct.unpack('>h', s.recv(2))[0]
            path = s.recv(path_len).decode('utf-8')
            if os.path.abspath(path) == os.path.abspath(CONFIG_PATH):
                found = True
                break
        except (socket.error, IOError):
            return False

    if found:
        cmd = 'activate ' + token + '\0' + os.getcwd() + '\0' + '\0'.join(args)
        if sys.version_info.major >= 3: cmd = cmd.encode('utf-8')
        encoded = struct.pack('>h', len(cmd)) + cmd
        s.send(encoded)
        time.sleep(0.5)  # don't close the socket immediately
        return True

    return False


def start_new_instance(args):
    if sys.platform == 'darwin':
        if len(args) > 0:
            args.insert(0, '--args')
        os.execvp('/usr/bin/open', ['-a', RUN_PATH] + args)
    else:
        bin_file = os.path.split(RUN_PATH)[1]
        os.execv(RUN_PATH, [bin_file] + args)


ide_args = process_args(sys.argv)
if not try_activate_instance(ide_args):
    start_new_instance(ide_args)

【讨论】:

    【解决方案5】:

    我通常使用 OS X 的内置应用程序启动器(打开)进行别名:

    alias pc='open -a /Applications/PyCharm\ CE.app'
    

    然后我可以输入:

    pc myfile1.txt myfiles*.py
    

    虽然您不能(轻松)将 args 传递给 PyCharm,但如果您想要一种快速打开文件的方法(无需使用文件的完整路径名),这可以解决问题。

    【讨论】:

      【解决方案6】:

      使用工具 -> 创建命令行启动器,它将安装一个 python 脚本,您可以在其中使用 charm 启动当前工作文件夹。

      非常重要!

      每当您升级您的 pyCharm 时,您都必须重新创建该命令行工具,因为它只是一个指向 pyCharm 配置的 Python 脚本,该配置可能已过时,并且在您尝试运行 charm . 时会导致它失败@

      【讨论】:

      • 确实,每次更新 PyCharm 时我都必须重新创建启动器才能让它再次工作。
      • 我喜欢有一个命令行启动器,但我想这是让 Toolbox 为你做的好处!
      【解决方案7】:

      macOS

      无需任何路径的简单解决方案:

      open -b com.jetbrains.pycharm <file>
      



      您可以将其设置为别名以方便日常使用(放入您的~/.bash_rc 等):

      alias pycharm='open -b com.jetbrains.pycharm'
      

      用法:

      pycharm .
      pycharm file.py
      

      【讨论】:

        【解决方案8】:

        要在 Ubuntu 16.04 中从终端打开 PyCharm,请 cd 进入

        {installation home}/bin
        

        在我的情况下是

        /home/nikhil/pycharm-community-2018.1.1/bin/
        

        然后输入:

        ./pycharm.sh
        

        【讨论】:

          【解决方案9】:

          导航到终端上的目录cd [your directory]

          Navigate to the directory on the terminal

          使用charm .在PyCharm中打开项目

          在 PyCharm 中打开项目的最简单快捷的方法

          【讨论】:

            【解决方案10】:

            在 Mac OSX 上

            2019/05 更新现在可以在 JetBrains Toolbox 应用中完成。您可以使用工具箱为所有 JetBrain IDE 设置一次。


            2019.1 EAP 起,Create Commmand Line Launcher 选项在“工具”菜单中不再可用。我的解决方案是在我的 bash/zsh 配置文件中使用以下别名:

            确保运行chmod -x ...../pycharm 以使二进制可执行。

            # in your ~/.profile or other rc file to the effect.
            
            alias pycharm="open -a '$(ls -r /Users/geyang/Library/Application\ Support/JetBrains/Toolbox/apps/PyCharm-P/**/PyCharm*.app/Contents/MacOS/pycharm)'"
            

            【讨论】:

            • 2019.1的发布版本又多了Create Command Line Launcher菜单项。
            【解决方案11】:

            在 Mac 上使用 zsh 的人的步骤:

            1. emacs ~/.zshrc&
            2. 把这个放到zshrc---> alias pycharm="/Applications/PyCharm\CE.app/Contents/MacOS/pycharm"
            3. 来源 ~/.zshrc
            4. 在命令窗口中输入 pycharm 启动

            【讨论】:

              【解决方案12】:

              安装到/usr/local/bin/charm 的附带实用程序在 OS X 上对我不起作用,所以我改用了这个实用程序。它确实有效!

              #!/usr/bin/env bash
              
              if [ -z "$1" ]
              then
                echo ""
                echo "Usage: charm <filename>"
                exit
              fi
              FILENAME=$1
              
              function myreadlink() {
                (
                cd $(dirname $1)         # or  cd ${1%/*}
                echo $PWD/$(basename $1) # or  echo $PWD/${1##*/}
                )
              }
              
              FULL_FILE=`myreadlink $FILENAME`;
              
              /Applications/PyCharm\ CE.app/Contents/MacOS/pycharm $FULL_FILE
              

              【讨论】:

                【解决方案13】:

                更新:我的答案从 PyCharm 2018.X 起不再有效

                在 MacOS 上,我的 bashrc 中有这个别名:

                alias pycharm="open -a /Applications/PyCharm*.app"
                

                我可以这样使用它:pycharm &lt;project dir or file&gt;

                以这种方式启动 PyCharm 的好处是您可以使用 pycharm . 在 PyCharm 中打开当前目录(不像 /Applications/PyCharm*.app/Contents/MacOS/pycharm . 而是打开 PyCharm 应用程序目录)


                更新:我切换到 JetBrains Toolbox 来安装 PyCharm。找到 PyCharm 变得有点复杂,但到目前为止,我很幸运能找到这个怪物:

                alias pycharm="open -a \"\$(ls -r  /Applications/apps/PyCharm*/*/*/PyCharm*.app | head -n 1 | sed 's/:$//')\""
                

                【讨论】:

                  【解决方案14】:

                  在kubuntu上安装后发现我在~/bin/pycharm的pycharm脚本只是一个桌面入口:

                  [Desktop Entry]                                                                                                                                                                                                 
                  Version=1.0
                  Type=Application
                  Name=PyCharm Community Edition
                  Icon=/snap/pycharm-community/79/bin/pycharm.png
                  Exec=env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/pycharm-community_pycharm-community.desktop /snap/bin/pycharm-community %f
                  Comment=Python IDE for Professional Developers
                  Categories=Development;IDE;
                  Terminal=false
                  StartupWMClass=jetbrains-pycharm-ce
                  

                  显然,我无法使用它从命令行打开任何内容:

                  $ pycharm setup.py
                  /home/eldond/bin/pycharm_old: line 1: [Desktop: command not found
                  /home/eldond/bin/pycharm_old: line 4: Community: command not found
                  

                  但桌面入口文件中有提示。查看/snap/pycharm-community/,我找到了/snap/pycharm-community/current/bin/pycharm.sh。我删除了~/bin/pycharm(实际上将其重命名为有备份)然后做了

                  ln -s /snap/pycharm-community/current/bin/pycharm.sh pycharm
                  

                  再次,我通过检查我必须开始的桌面输入脚本找到了路径的开始。

                  现在我可以从命令行使用 pycharm 打开文件了。我不知道这次我在安装过程中搞砸了什么;最近两次我进行了全新安装,没有任何问题。

                  【讨论】:

                    【解决方案15】:

                    对某些人有用的信息:

                    在 Linux 上,将 PyCharm 作为 snap 包安装会自动创建名为 pycharm-professional、pycharm-community 或 pycharm-educational 的命令行启动器。工具 |因此,创建命令行启动器命令不可用。

                    【讨论】:

                      【解决方案16】:

                      open /Applications/PyCharm\ CE.app/ 打开主要的 Pycharm 对话框以选择项目..

                      为我工作过 macOS 10.13.6Pycharm 2018.1

                      【讨论】:

                        【解决方案17】:

                        pycharm 下载并在 UBUNTU 中打开

                        下载:

                        打开:

                        1. 导航到解压文件夹中的 bin 目录。

                        2. 运行:./pycharm.sh

                        【讨论】:

                          【解决方案18】:

                          您可以在脚本中包含以下命令

                          root@aachutha-Inspiron-N5010:~# pycharm-community &
                          

                          [1] 5698

                          【讨论】:

                            【解决方案19】:

                            这适用于我的 2017 imac macOS Mojave(版本 10.14.3)。

                            1. 打开你的 ~/.bash_profile: nano ~/.bash_profile

                            2. 附加别名: alias pycharm="open /Applications/PyCharm\ CE.app"

                            3. 更新终端: source ~/.bash_profile

                            4. 断言它有效: pycharm

                            【讨论】:

                              【解决方案20】:

                              通过终端 (Linux)


                              用 bash 创建一个函数。
                              charm() { /usr/local/bin/charm; }
                              export charm
                              

                              通过 Pycharm

                              1. 进入 Pycharm
                              2. 点按两次 Shift(Shift + Shift)
                              3. 搜索创建命令行启动器
                              4. 输入命令行启动器:/usr/local/bin/charm
                              5. 点击确定

                              【讨论】:

                                【解决方案21】:

                                您可以使用 open 命令从 Mac 终端启动 Pycharm。只需输入open /path/to/App

                                Applications$ ls -lrt PyCharm\ CE.app/
                                total 8
                                drwxr-xr-x@ 71 amit  admin  2414 Sep 24 11:08 lib
                                drwxr-xr-x@  4 amit  admin   136 Sep 24 11:08 help
                                drwxr-xr-x@ 12 amit  admin   408 Sep 24 11:08 plugins
                                drwxr-xr-x@ 29 amit  admin   986 Sep 24 11:08 license
                                drwxr-xr-x@  4 amit  admin   136 Sep 24 11:08 skeletons
                                -rw-r--r--@  1 amit  admin    10 Sep 24 11:08 build.txt
                                drwxr-xr-x@  6 amit  admin   204 Sep 24 11:12 Contents
                                drwxr-xr-x@ 14 amit  admin   476 Sep 24 11:12 bin
                                drwxr-xr-x@ 31 amit  admin  1054 Sep 25 21:43 helpers
                                /Applications$
                                /Applications$ open PyCharm\ CE.app/
                                

                                【讨论】:

                                • 在 macOS 10.13.6 中完美运行
                                猜你喜欢
                                • 2019-05-01
                                • 1970-01-01
                                • 2018-08-18
                                • 2022-07-11
                                • 1970-01-01
                                • 2018-01-11
                                • 1970-01-01
                                • 2020-08-30
                                • 2016-10-06
                                相关资源
                                最近更新 更多