我想尝试PyCharm进行鼠尾草数学开发。通常我会运行eclipse来进行鼠尾草开发,但是现在我想与PyCharm一起尝试。
要使用sage环境变量启动eclipse,通常在命令行中执行以下操作:
sage -sh
cd /path/to/eclipse
./eclipse
第一行加载鼠尾草环境变量,其余行启动eclipse。如何为pyCharm做同样的事情?(请注意,我正在使用Mac和Ubuntu进行sage开发;以上命令对两个操作系统均不可知)
Answers:
编辑(2020年4月):现在似乎可以在工具箱应用程序设置中管理启动程序脚本的创建。有关更多详细信息,请参见工具箱应用公告。
-
Create Command-line Launcher
/usr/local/bin/charm
$ charm YOUR_FOLDER_OR_FILE
也许这就是您所需要的。
/usr/local/bin/charm
。尽管没有您的提示,我还是很难找到它。谢谢!
charm
安装时创建了二进制文件。太棒了!
没错,JetBrains帮助页面不是很清楚。在OS X上,您需要在以下位置使用启动器:
/Applications/PyCharm.app/Contents/MacOS/pycharm
或者,对于社区版:
/Applications/PyCharm\ CE.app/Contents/MacOS/pycharm
不幸的是,向此二进制文件添加符号链接对我不起作用(启动器将崩溃)。但是,设置别名是可行的。将其添加到您的.bash_profile
(或您使用的任何shell)中:
alias pycharm="/Applications/PyCharm CE.app/Contents/MacOS/pycharm"
然后,您可以使用simple运行命令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无法找到它们。
这是现在可以从JetBrains的工具箱发射器自动创建命令行。这是您的操作方式:
Generate shell scripts
;Shell script location
文本框中填入您希望启动器驻留的位置。您必须手动执行此操作,此时它不会自动填充!在Mac上,位置可能是/usr/local/bin
。对于新手,您可以使用PATH变量内的任何路径,也可以在bash配置文件中向PATH变量添加新路径。用echo $PATH
看哪个路径存在。
注意!它对我来说不是立即可用,在脚本生成之前,我不得不花一点时间。您可以转到IDEA的变速箱(例如,PyCharm)并查看/更改启动器名称。因此,对于PyCharm,默认名称为pycharm
但您可以将其更改为自己喜欢的名称。
如果您不使用工具箱,则仍然可以使用我的原始答案。
~~由于某种原因,该Create Command Line Launcher
功能于2019.1.1不再可用。~~因为它现在是JetBrains Toolbox的一部分
这是您自己创建脚本的方法:
如果在使用前已经使用过charm命令type -a 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)
要从Ubuntu 16.04的终端打开PyCharm,请进入cd
{installation home}/bin
在我的情况下
/home/nikhil/pycharm-community-2018.1.1/bin/
然后输入:
./pycharm.sh
更新2019/05现在可以在JetBrains Toolbox应用程序中完成此操作。您可以使用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)'"
Create Command Line Launcher
再次具有菜单项。
安装的包含的实用程序/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
在MacOS上,我的bashrc中具有以下别名:
alias pycharm="open -a /Applications/PyCharm*.app"
我可以这样使用它: pycharm <project dir or file>
以这种方式启动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/:$//')\""
在kubuntu上安装后,我发现我的pycharm脚本~/bin/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打开文件。我不知道这次安装过程中发生了什么。最近两次我完成了全新的安装,这没有任何问题。
您可以Pycharm
使用open命令从Mac终端启动。只需输入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/